我智商爆棚
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.

1005 lines
34 KiB

4 weeks ago
import { ryw_Event } from "../../../FrameWork/Event/EventEnum";
import EventMgr from "../../../FrameWork/Event/EventMgr";
import AppPlatform from "../../../FrameWork/Util/AppPlatform";
import Common from "../../../FrameWork/Util/Common";
import Common5 from "../../../Platform/th/Common5";
const { ccclass, property } = cc._decorator;
enum MOVEDIR {
UP,
DOWN,
LEFT,
RIGHT,
}
@ccclass
export default class CccGame {
public static SpecilalShowNode: cc.Node = null;
/**
*
* @param emitTarget
* @param checkNode
* @param emitAttr
* @param allowCheckNode active为true触发
* @returns
*/
public static onCloneNodeTouchCheckEvent(
emitTarget: cc.Node,
checkNode: cc.Node,
emitAttr: any = {},
allowCheckNode: cc.Node = null
) {
//触碰回调事件
let completeCallback: (data_: any) => void = null;
//克隆节点
let cloneNode = cc.instantiate(emitTarget);
cloneNode.parent = emitTarget.parent;
cloneNode.opacity = 0;
//触摸开始
let touchStartNode = (event) => {
Common5.playEffect("点击音效");
let target = event.target
target.opacity = 255;
console.log('touchStartNode', target.zIndex)
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
target.setPosition(posi)
EventMgr.emitEvent_custom(ryw_Event.openBGMove, { open: false });
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
target.setPosition(posi)
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target;
let checkNode = target.checkNode;
if (!allowCheckNode || allowCheckNode.active) {
if (Common5.checkIntersectsBox(target, checkNode)) {
if (completeCallback) {
completeCallback({ targetNode: target });
}
target.opacity = 0;
}
}
if (target.recoveposi) {
cc.tween(target)
.to(0.2, { position: target.recoveposi })
.set({ opacity: 0 })
.start();
}
};
//注册触摸事件
cloneNode['checkNode'] = checkNode;
cloneNode['recoveposi'] = cloneNode.getPosition();
cloneNode.attr(emitAttr);
cloneNode.on(cc.Node.EventType.TOUCH_START, touchStartNode)
cloneNode.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
cloneNode.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
cloneNode.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setCompleteListener: (callback: (data_: any) => void) => {
completeCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
cloneNode.off(cc.Node.EventType.TOUCH_START, touchStartNode);
cloneNode.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
cloneNode.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
cloneNode.off(cc.Node.EventType.TOUCH_END, touchEndNode);
completeCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param checkNode
* @param emitAttr
* @param moveNode
* @param allowCheckNode active为true触发
* @returns
*/
public static onNodeTouchClickAndCheckEvent(
emitTarget: cc.Node,
checkNode: cc.Node,
emitAttr: any = {},
moveNode: cc.Node = null,
allowCheckNode: cc.Node = null
) {
//触碰回调事件
let checkCallback: (data_: any) => void = null;
//点击回调事件
let clickCallback: (data_: any) => void = null;
//是否属于点击
let isClick = false;
//触摸开始
let touchStartNode = (event) => {
let target = event.target;
console.log('touchStartNode', target.zIndex);
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(true);
}
Common5.playEffect("点击音效");
target.saveWorldPos = target.convertToWorldSpaceAR(cc.Vec2.ZERO);
isClick = true;
setTimeout(() => {
isClick = false;
}, 200);
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
if (moveNode) {
target.parent = moveNode;
}
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
target.setPosition(posi)
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target;
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(false);
}
if (isClick) {
target.active = false;
if (clickCallback) {
clickCallback({ targetNode: target });
}
target.setPosition(target.recoveposi);
target.parent = target.recoveparent;
} else {
let checkNode = target.checkNode;
if (!allowCheckNode || allowCheckNode.active) {
if (Common5.checkContainsNode(checkNode, target)) {
target.active = false;
checkNode.active = false;
if (checkCallback) {
checkCallback({ targetNode: target });
}
}
}
if (target.recoveposi) {
cc.tween(target)
.to(0.2, { position: target.parent.convertToNodeSpaceAR(target.saveWorldPos) })
.set({ parent: target.recoveparent, position: target.recoveposi })
.start();
}
}
};
//注册触摸事件
emitTarget['checkNode'] = checkNode;
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget['recoveparent'] = emitTarget.parent;
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setCheckListener: (callback: (data_: any) => void) => {
checkCallback = callback;
},
/**设置完成后的事件监听 */
setClickListener: (callback: (data_: any) => void) => {
clickCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
checkCallback = null;
clickCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param checkNode
* @param emitAttr
* @param moveNode
* @param allowCheckNode active为true触发
* @returns
*/
public static onNodeTouchCheckEvent(
emitTarget: cc.Node,
checkNode: cc.Node,
emitAttr: any = {},
moveNode: cc.Node = null,
allowCheckNode: cc.Node = null
) {
//成功回调事件
let successCallback: (data_: any) => void = null;
//失败回调事件
let failCallback: (data_: any) => void = null;
//触摸开始
let touchStartNode = (event) => {
let target = event.target;
console.log('touchStartNode', target.zIndex);
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(true);
}
Common5.playEffect("点击音效");
target.saveWorldPos = target.convertToWorldSpaceAR(cc.Vec2.ZERO);
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
if (moveNode) {
target.parent = moveNode;
}
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
target.setPosition(posi)
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target;
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(false);
}
let checkNode = target.checkNode;
if (!allowCheckNode || allowCheckNode.active) {
if (Common5.checkContainsNode(checkNode, target)) {
target.active = false;
checkNode.active = false;
if (successCallback) {
successCallback({ targetNode: target });
}
} else {
if (failCallback) {
failCallback({ targetNode: target });
}
}
} else {
if (failCallback) {
failCallback({ targetNode: target });
}
}
if (target.recoveposi) {
cc.tween(target)
.to(0.2, { position: target.parent.convertToNodeSpaceAR(target.saveWorldPos) })
.set({ parent: target.recoveparent, position: target.recoveposi })
.start();
}
};
//注册触摸事件
emitTarget['checkNode'] = checkNode;
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget['recoveparent'] = emitTarget.parent;
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setSuccessListener: (callback: (data_: any) => void) => {
successCallback = callback;
},
/**设置完成后的事件监听 */
setFailListener: (callback: (data_: any) => void) => {
failCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
successCallback = null;
failCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param checkNodeArray
* @param emitAttr
* @param moveNode
* @returns
*/
public static onNodeTouchMoreCheckEvent(
emitTarget: cc.Node,
checkNodeArray: cc.Node[],
emitAttr: any = {},
moveNode: cc.Node = null
) {
//成功回调事件
let successCallback: (data_: any) => void = null;
//失败回调事件
let failCallback: (data_: any) => void = null;
//触摸开始
let touchStartNode = (event) => {
let target = event.target;
console.log('touchStartNode', target.zIndex);
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(true);
}
Common5.playEffect("点击音效");
target.saveWorldPos = target.convertToWorldSpaceAR(cc.Vec2.ZERO);
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
if (moveNode) {
target.parent = moveNode;
}
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
target.setPosition(posi)
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target;
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(false);
}
let checkNode = null;
let checkNodeArray = target.checkNodeArray;
for (let iterator of checkNodeArray) {
if (this.SpecilalShowNode) {
if (iterator == this.SpecilalShowNode) {
if (iterator.active && Common5.checkContainsNode(iterator, target)) {
checkNode = iterator;
break;
}
}
} else {
if (iterator.active && Common5.checkContainsNode(iterator, target)) {
checkNode = iterator;
break;
}
}
}
if (checkNode) {
target.active = false;
checkNode.active = false;
target['checkNode'] = checkNode;
if (successCallback) {
successCallback({ targetNode: target });
}
} else {
if (failCallback) {
failCallback({ targetNode: target });
}
}
if (target.recoveposi) {
cc.tween(target)
.to(0.2, { position: target.parent.convertToNodeSpaceAR(target.saveWorldPos) })
.set({ parent: target.recoveparent, position: target.recoveposi })
.start();
}
};
//注册触摸事件
emitTarget['checkNodeArray'] = checkNodeArray;
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget['recoveparent'] = emitTarget.parent;
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setSuccessListener: (callback: (data_: any) => void) => {
successCallback = callback;
},
/**设置失败后的事件监听 */
setFailListener: (callback: (data_: any) => void) => {
failCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
successCallback = null;
failCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param checkNodeArray
* @param emitAttr
* @param directionMode 01
* @param moveNode
* @returns
*/
public static onNodeUnidirMoveCheckEvent(
emitTarget: cc.Node,
checkNodeArray: cc.Node[],
emitAttr: any = {},
directionMode: number = 0,
moveNode: cc.Node = null
) {
//成功回调事件
let successCallback: (data_: any) => void = null;
//失败回调事件
let failCallback: (data_: any) => void = null;
//触摸开始
let touchStartNode = (event) => {
let target = event.target;
console.log('touchStartNode', target.zIndex);
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(true);
}
Common5.playEffect("点击音效");
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
if (moveNode) {
target.parent = moveNode;
}
let posi = event.getLocation()//世界坐标
posi = target.parent.convertToNodeSpaceAR(posi)
if (directionMode == 0) {
target.x = posi.x;
} else {
target.y = posi.y;
}
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target;
if (target['_touchListener']) {
target['_touchListener'].setSwallowTouches(false);
}
let checkNode = null;
let checkNodeArray = target.checkNodeArray;
for (let iterator of checkNodeArray) {
if (iterator.active && Common5.checkContainsNode(iterator, target)) {
checkNode = iterator;
break;
}
}
if (checkNode) {
target.active = false;
checkNode.active = false;
target['checkNode'] = checkNode;
if (successCallback) {
successCallback({ targetNode: target });
}
} else {
if (failCallback) {
failCallback({ targetNode: target });
}
}
if (target.recoveposi) {
target.parent = target.recoveparent;
target.setPosition(target.recoveposi);
}
};
//注册触摸事件
emitTarget['checkNodeArray'] = checkNodeArray;
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget['recoveparent'] = emitTarget.parent;
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setSuccessListener: (callback: (data_: any) => void) => {
successCallback = callback;
},
/**设置完成后的事件监听 */
setFailListener: (callback: (data_: any) => void) => {
failCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
successCallback = null;
failCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param isEmitTargetHide
* @param clickTimes
* @param emitAttr
* @returns
*/
public static onNodeTouchMoreClickEvent(
emitTarget: cc.Node,
isEmitTargetHide: boolean = true,
clickTimes: number = 1,
emitAttr: any = {}
) {
//触碰回调事件
let completeCallback: (data_: any) => void = null;
//当前点击次数
let curClickTimes = 0;
//点击判断
let isCanClick = false;
//触摸开始
let touchStartNode = (event) => {
Common5.playEffect("点击音效");
let target = event.target;
console.log('touchStartNode', target.zIndex);
if (curClickTimes == 0) {
curClickTimes++;
setTimeout(() => {
curClickTimes = 0;
}, 2000);
} else {
curClickTimes++;
}
isCanClick = true;
setTimeout(() => {
isCanClick = false;
}, 200);
};
//触摸移动
let touchMoveNode = (event) => {
};
//触摸结束
let touchEndNode = (event) => {
if (!isCanClick && curClickTimes < clickTimes) {
return;
}
let target = event.target;
if (isEmitTargetHide) {
target.active = false;
}
if (completeCallback) {
completeCallback({ targetNode: target });
}
};
//注册触摸事件
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
//emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setCompleteListener: (callback: (data_: any) => void) => {
completeCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
completeCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param isEmitTargetHide
* @param longClickTime
* @param emitAttr
* @returns
*/
public static onNodeTouchLongClickEvent(
emitTarget: cc.Node,
isEmitTargetHide: boolean = true,
longClickTime: number = 1,
emitAttr: any = {}
) {
//短按回调事件
let shortClickCallback: (data_: any) => void = null;
//长按回调事件
let longClickCallback: (data_: any) => void = null;
//点击判断
let isCanClick = false;
//触摸开始
let touchStartNode = (event) => {
Common5.playEffect("点击音效");
let target = event.target;
console.log('touchStartNode', target.zIndex);
isCanClick = true;
setTimeout(() => {
if (isCanClick) {
if (isEmitTargetHide) {
target.active = false;
}
if (longClickCallback) {
longClickCallback({ targetNode: target });
}
isCanClick = false;
}
}, longClickTime * 1000);
};
//触摸移动
let touchMoveNode = (event) => {
};
//触摸结束
let touchEndNode = (event) => {
if (!isCanClick) {
return;
}
isCanClick = false;
let target = event.target;
if (isEmitTargetHide) {
target.active = false;
}
if (shortClickCallback) {
shortClickCallback({ targetNode: target });
}
};
//注册触摸事件
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
//emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置短按的事件监听 */
setShortClickListener: (callback: (data_: any) => void) => {
shortClickCallback = callback;
},
/**设置长按的事件监听 */
setLongClickListener: (callback: (data_: any) => void) => {
longClickCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
shortClickCallback = null;
longClickCallback = null;
}
};
return retFuncGroup;
}
/**
*
* @param emitTarget
* @param directIndex
* @param directvalue
* @param isEmitTargetHide
* @param emitAttr
* @returns
*/
public static onNodeDirTouchEvent(
emitTarget: cc.Node,
directIndex: MOVEDIR = MOVEDIR.UP,
directvalue: number = 50,
isEmitTargetHide: boolean = true,
emitAttr: any = {}
) {
//触碰回调事件
let completeCallback: (data_: any) => void = null;
//触摸开始坐标
let touchStartPosi = null;
let callbacks = (target) => {
EventMgr.emitEvent_custom(ryw_Event.openBGMove, { open: true });
console.log("++++++++++++++++++++>" + target.name);
if (isEmitTargetHide) {
target.active = false;
}
if (completeCallback) {
completeCallback({ targetNode: target });
}
}
//触摸开始
let touchStartNode = (event) => {
let target = event.target
let posi = event.getLocation()//世界坐标
touchStartPosi = posi
console.log('touchStartNode', target.zIndex)
EventMgr.emitEvent_custom(ryw_Event.openBGMove, { open: false });
};
//触摸移动
let touchMoveNode = (event) => {
let target = event.target
let posi = event.getLocation()//世界坐标
if (directIndex == MOVEDIR.UP) {
if ((posi.y - touchStartPosi.y) >= directvalue) {
console.log('UP')
callbacks(target)
}
} else if (directIndex == MOVEDIR.DOWN) {
if ((touchStartPosi.y - posi.y) >= directvalue) {
console.log('DOWN')
callbacks(target)
}
} else if (directIndex == MOVEDIR.RIGHT) {
if ((posi.x - touchStartPosi.x) >= directvalue) {
console.log('RIGHT')
callbacks(target)
}
} else if (directIndex == MOVEDIR.LEFT) {
if ((touchStartPosi.x - posi.x) >= directvalue) {
console.log('LEFT')
callbacks(target)
}
}
};
//触摸结束
let touchEndNode = (event) => {
let target = event.target
EventMgr.emitEvent_custom(ryw_Event.openBGMove, { open: true });
console.log("++++++++++++++++++++>" + target.name);
};
//注册触摸事件
emitTarget['recoveposi'] = emitTarget.getPosition();
emitTarget.attr(emitAttr);
emitTarget.on(cc.Node.EventType.TOUCH_START, touchStartNode)
emitTarget.on(cc.Node.EventType.TOUCH_MOVE, touchMoveNode)
emitTarget.on(cc.Node.EventType.TOUCH_CANCEL, touchEndNode)
emitTarget.on(cc.Node.EventType.TOUCH_END, touchEndNode)
//回调函数集合
let retFuncGroup = {
/**设置完成后的事件监听 */
setCompleteListener: (callback: (data_: any) => void) => {
completeCallback = callback;
},
/**关闭触摸事件 */
closeTouchEvent: () => {
emitTarget.off(cc.Node.EventType.TOUCH_START, touchStartNode);
emitTarget.off(cc.Node.EventType.TOUCH_MOVE, touchMoveNode);
emitTarget.off(cc.Node.EventType.TOUCH_CANCEL, touchEndNode);
emitTarget.off(cc.Node.EventType.TOUCH_END, touchEndNode);
completeCallback = null;
}
};
return retFuncGroup;
}
/**
* spine动画
* @param spineNode
* @param spineAnim
* @param loop
* @param isSpineNodeHide
* @param maskNode
* @returns
*/
public static playAnimation(
spineNode: cc.Node,
spineAnim: string,
loop: boolean = false,
animTime: number = -1,
isSpineNodeHide: boolean = false,
maskNode: cc.Node = null,
) {
//触碰回调事件
let completeCallback: () => void = null;
if (maskNode) {
maskNode.active = true;
}
let callbacks = () => {
if (isSpineNodeHide) {
spineNode.active = false;
}
if (maskNode) {
maskNode.active = false;
}
if (completeCallback) {
completeCallback();
}
}
spineNode.active = true
spineNode.getComponent(sp.Skeleton).setAnimation(0, spineAnim, loop);
if (animTime >= 0) {
setTimeout(callbacks, animTime * 1000);
} else {
callbacks();
}
//回调函数集合
let retFuncGroup = {
/**设置动画播放完后的事件监听 */
setEndListener: (callback: () => void) => {
completeCallback = callback;
}
};
return retFuncGroup;
}
/**
* spine动画
* @param spineNode
* @param animName
* @param loop
* @param skinName
* @param completeCallback
* @returns
*/
public static playAnimation2(
spineNode: cc.Node,
animName: string,
loop: boolean = false,
skinName: string = null,
completeCallback: (spineNode: cc.Node) => void = null
) {
spineNode.active = true;
if (skinName && skinName != '') {
spineNode.getComponent(sp.Skeleton).setSkin(skinName);
}
if (completeCallback) {
spineNode.getComponent(sp.Skeleton).setCompleteListener(() => {
completeCallback(spineNode);
});
}
spineNode.getComponent(sp.Skeleton).setAnimation(0, animName, loop);
}
/**
*
* @param confirmCallback
* @param cancelCallback
*/
public static showAddTimesView(
parentNode: cc.Node,
confirmCallback?: Function,
cancelCallback?: Function,
) {
Common.getPrefabFromBundle("WordGame", "gameComPrefab/AddTimesView", parentNode, (node: cc.Node) => {
let btnLayout = node.getChildByName("btnLayout");
Common5.btnRegister_custom(btnLayout.getChildByName("加次数"), () => {
let tab = {
onClose: (finish) => {
if (finish) {
if (confirmCallback) {
confirmCallback();
}
node.destroy();
}
else {
Common5.showTips_custom("广告未观看完!");
}
}, onFailed: () => {
Common5.showTips_custom("加载广告失败!");
}
}
AppPlatform.playVideo_custom(tab);
}, 1, 0.2, '点击音效');
Common5.btnRegister_custom(btnLayout.getChildByName("取消"), () => {
if (cancelCallback) {
cancelCallback();
}
node.destroy();
}, 1, 0.2, '点击音效');
})
}
}