问题描述:
监听node节点,每触碰一次 1秒钟让其旋转90度
onLoad () {
this.node.on(cc.Node.EventType.TOUCH_START,this.rotateNode,this);
},
// 旋转方法
rotateNode:function(){
var rota1 = cc.rotateBy(1,90);
this.node.runAction(rota1);
}
如果在 动作执行的1秒内重复点击,就会发生多次旋转且角度不对,比如
这是因为,在动作执行中,节点角度已发生变化,此时在点击,就是在变化的基础上再旋转90度
如何控制呢?
// 改善后的旋转方法
rotateNode:function(){
var rota1 = cc.rotateBy(1,90);
rota1.setTag(1); // 给动作设置标签
console.log("动作返回 ",this.node.getActionByTag(1));
if(this.node.getActionByTag(1)){
return;
}
this.node.runAction(rota1);
}
getActionByTag(): 通过目标对象和标签获取一个动作
我打印后返回值是:
这说明:当获取的这个动作,此时未在执行中的时候,返回为 null
若此节点正在执行,则返回一个object
由此,我们可以利用返回值,解决上述问题
再见~~~