如何简单的扩展 Action

想要方便的使用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也可以順利執行嗎?