在cocos creator2.4中 点击节点完成移动
在Cocos Creator 2.4中,要实现点击节点后移动该节点的功能,你可以使用以下步骤:
- 给节点添加一个
Touch
事件监听器。 - 在事件处理函数中判断是否为点击事件,并记录下点击位置。
- 在
update
函数中根据点击位置和当前位置计算移动偏移量,并移动节点。
以下是实现这个功能的示例代码:
首先,在编辑器中选择你的节点,然后添加一个 Touch
事件组件,并设置一个全局的事件处理函数,例如 onTouch
。
然后,在脚本中编写如下代码:
cc.Class({
extends: cc.Component,
properties: {
// 可以在这里指定一个节点作为目标节点
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
start () {
// 初始化变量
this.startPos = null;
this.isMoving = false;
},
update (dt) {
// 如果正在移动,更新目标节点的位置
if (this.isMoving) {
let node = this.node;
let pos = node.position;
// 根据实际情况调整移动速度
node.x += (this.targetPos.x - pos.x) * dt * 10;
node.y += (this.targetPos.y - pos.y) * dt * 10;
// 到达目标位置后停止移动
if (Math.abs(node.x - this.targetPos.x) < 0.5 && Math.abs(node.y - this.targetPos.y) < 0.5) {
this.isMoving = false;
}
}
},
onTouch: function (event, customEventData) {
if (event === cc.Node.EventType.TOUCH_END) {
// 点击结束,不再移动
this.isMoving = false;
} else if (event === cc.Node.EventType.TOUCH_START) {
// 记录点击开始的位置
this.startPos = event.getLocation();
} else if (event === cc.Node.EventType.TOUCH_MOVE) {
// 忽略移动事件
} else if (event === cc.Node.EventType.TOUCH_END && this.startPos) {
// 点击结束并且有起始位置,计算目标位置并开始移动
let currentPos = event.getLocation();
this.targetPos = cc.v2(this.node.x + currentPos.x - this.startPos.x, this.node.y + currentPos.y - this.startPos.y);
this.isMoving = true;
}
}
// ...
});
将上述代码添加到你的脚本中,并将脚本附加到需要移动的节点上。当你点击该节点后,它将会沿着你拖动的方向移动。
注意:
- 上述代码中的
update
函数中的移动速度是硬编码的,你可以根据需要调整。 - 目标位置
this.targetPos
是根据点击的起始位置和当前位置计算得到的。 - 这个例子中没有处理边界检查和其他特殊情况,你可能需要根据实际需求进行扩展。
评论已关闭