You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.4 KiB
104 lines
3.4 KiB
import { _decorator,screen, AssetManager, AudioClip, Component, director, EventTouch, instantiate, isValid, IVec2Like, IVec3, IVec3Like, misc, Node, ParticleSystem2D, Prefab, Tween, tween, UIOpacity, Vec2, Vec3, sys } from "cc";
|
|
import MesMgr from "../MesEvent/MesMgr";
|
|
import { Global } from "../Global";
|
|
import { PREVIEW } from "cc/env";
|
|
|
|
const BlockEvents = [
|
|
Node.EventType.TOUCH_START, Node.EventType.TOUCH_MOVE, Node.EventType.TOUCH_END, Node.EventType.TOUCH_CANCEL,
|
|
Node.EventType.MOUSE_DOWN, Node.EventType.MOUSE_MOVE, Node.EventType.MOUSE_UP,
|
|
Node.EventType.MOUSE_ENTER, Node.EventType.MOUSE_LEAVE, Node.EventType.MOUSE_WHEEL
|
|
];
|
|
|
|
const {ccclass, property,menu} = _decorator;
|
|
@ccclass("GlobalClick")
|
|
export default class GlobalClick extends Component {
|
|
|
|
@property(Prefab)
|
|
effect:Prefab;
|
|
private _Pool: Node[] = [];
|
|
private getEffect(){
|
|
if (this._Pool.length) {
|
|
return this._Pool.shift();
|
|
} else {
|
|
let tNode = instantiate(this.effect);
|
|
tNode.setParent(this.node);
|
|
return tNode;
|
|
}
|
|
}
|
|
|
|
private pushEffect(tNode:Node){
|
|
Tween.stopAllByTarget(tNode);
|
|
tNode.getComponent(ParticleSystem2D).stopSystem();
|
|
tNode.active = false;
|
|
this._Pool.push(tNode);
|
|
}
|
|
|
|
private _maxFarme:number = 3;
|
|
private _curFarme:number = 0;
|
|
private liftime:number = 0.5;
|
|
private tempPos:Vec3 = new Vec3();
|
|
|
|
protected onLoad(): void {
|
|
//this.node.addComponent(UIOpacity).opacity = 0;
|
|
|
|
for (let i = 0; i < BlockEvents.length; i++) {
|
|
const mType = BlockEvents[i];
|
|
switch(mType){
|
|
case Node.EventType.TOUCH_START:
|
|
this.node.on(mType,this.TOUCH_START,this)
|
|
break;
|
|
case Node.EventType.TOUCH_END:
|
|
this.node.on(mType, this.TOUCH_END, this)
|
|
break;
|
|
default:
|
|
this.node.on(mType, this.default, this)
|
|
break;
|
|
}
|
|
|
|
}
|
|
}
|
|
default(event: EventTouch){
|
|
event.preventSwallow = true;
|
|
}
|
|
|
|
TOUCH_START(event: EventTouch){
|
|
event.preventSwallow = true;
|
|
//this.playEffect(event.getUILocation());
|
|
}
|
|
|
|
TOUCH_END(event: EventTouch){
|
|
event.preventSwallow = true;
|
|
if (!Global.Audio.firstClick) {
|
|
Global.Audio.firstClick = true;
|
|
}
|
|
|
|
if (sys.isBrowser && sys.isMobile && !screen.fullScreen()) {
|
|
screen.requestFullScreen().then((res) => {
|
|
ConsoleEx.Com(res);
|
|
}).catch((e) => {
|
|
ConsoleEx.Error(e);
|
|
});
|
|
}
|
|
}
|
|
|
|
playEffect(pos:IVec2Like){
|
|
if (this._curFarme >= this._maxFarme) {
|
|
this._curFarme = 0;
|
|
this.tempPos.x = pos.x;
|
|
this.tempPos.y = pos.y;
|
|
this.node.uiTrans.convertToNodeSpaceAR(this.tempPos,this.tempPos);
|
|
let tNode = this.getEffect();
|
|
tNode.active = true;
|
|
tNode.getComponent(ParticleSystem2D).resetSystem();
|
|
tNode.setPosition(this.tempPos.x,this.tempPos.y);
|
|
tween(tNode).delay(this.liftime).call(()=>{
|
|
this.pushEffect(tNode);
|
|
}).start();
|
|
}
|
|
}
|
|
|
|
protected update(dt: number): void {
|
|
this._curFarme = Math.min(this._curFarme + 1, this._maxFarme);
|
|
}
|
|
|
|
}
|