纸牌可以上下滑动了,但还有BUG
@ccclass
export default class MainScene extends cc.Component {
private selectedNodeIndex: number = -1; private isDoingAction: boolean = false; private kd: boolean = false; private ku: boolean = false; start() { for (let i = 0; i 13; i++) { const sprite = this.node.children[i]; sprite.setPosition(0, 0); console.log(sprite.name + .png的SiblingIndex= + sprite.getSiblingIndex()); sprite.on( touchmove , this.onCardTouchMove, this); } } private onCardTouchMove(event: cc.Event.EventTouch) { // 如果正在执行动作,则直接返回,避免重复执行 if (this.isDoingAction) { return; } // 获取当前触摸的卡牌节点和该节点在父节点中的索引位置 const node = event.target; const index = node.getSiblingIndex();
// 获取触摸点相对于上一次触摸点的位移量 const delta = event.touch.getDelta(); // 如果位移量是向上的 if (delta.y 5) { console.log( 向上滑动。 if (this.kd === true) { for (let i = 1; i = 13; i++) { this.node.getChildByName(i.toString()).setSiblingIndex(i-1); } this.kd = false; }
// 获取网格节点和所有子节点 const grid = cc.find( Canvas/grid const children = grid.children; console.log( 点中的图片名为 + node.name + ,getSiblingIndex= + index); // // 遍历子节点,将其他节点的透明度重置 for (let i = 0; i children.length; i++) { const child = children[i]; if (i != index) { child.opacity = 255; } } // 将节点设置到最上层,并将位置重置 node.setPosition(cc.v2(0, 0)); node.opacity = 255; node.setSiblingIndex(0); // 设置标记为结束执行动作 this.isDoingAction = false; }) )); } // 如果位移量是向下的 if (delta.y 0) { console.log( 向下滑动了。 this.isDoingAction = true; // var iindex: number = parseInt(node.name) - 1;
for (let i = 1; i = 13; i++) { this.node.getChildByName(i.toString()).setSiblingIndex(13 - i); } this.kd = true; } // 运行一系列动作,包括上移和淡出 node.runAction(cc.sequence( cc.spawn( cc.moveBy(0.1, cc.v2(0, -300)), cc.moveBy(0.1, cc.v2(0, -100)) // cc.fadeOut(0.1) ), // 执行完成后的回调函数 cc.callFunc(() = { // 遍历子节点,将其他节点的透明度重置 for (let i = 0; i this.node.children.length; i++) { const child = this.node.children[i]; if (i != index) { child.opacity = 255; } } node.setPosition(cc.v2(0, 0)); node.opacity = 0; node.setSiblingIndex(0); this.isDoingAction = false; }) )); } } }
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
private selectedNodeIndex: number = -1; private isDoingAction: boolean = false; private kd: boolean = false; private ku: boolean = false; start() { for (let i = 0; i 13; i++) { const sprite = this.node.children[i]; sprite.setPosition(0, 0); console.log(sprite.name + .png的SiblingIndex= + sprite.getSiblingIndex()); sprite.on( touchmove , this.onCardTouchMove, this); } } private onCardTouchMove(event: cc.Event.EventTouch) { // 如果正在执行动作,则直接返回,避免重复执行 if (this.isDoingAction) { return; } // 获取当前触摸的卡牌节点和该节点在父节点中的索引位置 const node = event.target; const index = node.getSiblingIndex();
// 获取触摸点相对于上一次触摸点的位移量 const delta = event.touch.getDelta(); // 如果位移量是向上的 if (delta.y 5) { console.log( 向上滑动。 if (this.kd === true) { for (let i = 1; i = 13; i++) { this.node.getChildByName(i.toString()).setSiblingIndex(i-1); } this.kd = false; }
// 获取网格节点和所有子节点 const grid = cc.find( Canvas/grid const children = grid.children; console.log( 点中的图片名为 + node.name + ,getSiblingIndex= + index); // // 遍历子节点,将其他节点的透明度重置 for (let i = 0; i children.length; i++) { const child = children[i]; if (i != index) { child.opacity = 255; } } // 将节点设置到最上层,并将位置重置 node.setPosition(cc.v2(0, 0)); node.opacity = 255; node.setSiblingIndex(0); // 设置标记为结束执行动作 this.isDoingAction = false; }) )); } // 如果位移量是向下的 if (delta.y 0) { console.log( 向下滑动了。 this.isDoingAction = true; // var iindex: number = parseInt(node.name) - 1;
for (let i = 1; i = 13; i++) { this.node.getChildByName(i.toString()).setSiblingIndex(13 - i); } this.kd = true; } // 运行一系列动作,包括上移和淡出 node.runAction(cc.sequence( cc.spawn( cc.moveBy(0.1, cc.v2(0, -300)), cc.moveBy(0.1, cc.v2(0, -100)) // cc.fadeOut(0.1) ), // 执行完成后的回调函数 cc.callFunc(() = { // 遍历子节点,将其他节点的透明度重置 for (let i = 0; i this.node.children.length; i++) { const child = this.node.children[i]; if (i != index) { child.opacity = 255; } } node.setPosition(cc.v2(0, 0)); node.opacity = 0; node.setSiblingIndex(0); this.isDoingAction = false; }) )); } } }
当前脚本绑定到带有13张图片的节点上即可。
BUG:当在中途改变滑动方向时,牌序被重置了,没有从当前位置操作下一步对象。
本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
0条评论