想要方便的使用runaction,但好像web和jsb两套实现,写个 action比较麻烦,怎么方便的自定义?
建议用 update 模拟 Action,本质是一样的,Action 也是由 ActionManager 调度,每帧 update 中修改属性。
这样不能使用sequence了 不能和自带的action混合使用
需要hack一下
onLoad: function () {
// // 单个动作
// this.node.runAction(this.createMoveCircleAction(2, cc.p(100, 100), 50))
// // 连续动作
// this.node.runAction(
// cc.sequence(
// this.createMoveCircleAction(1, cc.p(100, 100), 50),
// cc.tintTo(2, 255, 0, 0)))
// 并发动作
this.node.runAction(
cc.spawn(
this.createMoveCircleAction(1, cc.p(100, 100), 50),
cc.tintTo(2, 255, 0, 0)))
},
createMoveCircleAction: function(time, center, radius) {
var action = cc.delayTime(time)
action.update = function(progress){
// progress是动作完成度, 通过getTarget获取执行动作的node
var node = action.getTarget()
node.x = center.x + radius * Math.sin(Math.PI * 2 * progress)
node.y = center.y + radius * Math.cos(Math.PI * 2 * progress)
}
return action;
}
4赞
收藏收藏 学习
机智那!这么简单的方法!
這招有聰明, 這在native也可以順利執行嗎?