无法获得cc.point和延迟一起工作

时间:2014-07-31 00:34:02

标签: cocos2d-html5

好的想想Space Invaders和Galaga。我在屏幕顶部有一个敌人中队。它们作为一组在屏幕上左右移动。敌人战斗机偶尔离开小组并攻击玩家的船只。做一些bezier曲线,试图攻击玩家的船。如果敌方战斗机未命中,他(1)飞离屏幕底部,隐藏,移动到屏幕顶部,出现并飞回其在中队的位置。问题是敌人的战斗机飞回到它离开中队的位置,而不是它当前的位置。

  1. 设置变量new_pos
  2. 呼叫动作功能,延迟处理贝塞尔飞行路径,例如
  3. 动作((bezier),(延迟5秒),(隐藏敌方战斗机),(延迟1秒),(将敌方战斗机移动到屏幕顶部),(显示敌方战斗机),(调用命令获取敌方战斗机)在中队的新职位),(bezier回到新的位置)

    一旦调用父函数,就会调用CallFunc。不是在延迟之后。我期待的是什么?

    var epos = 0;
    
    if (enemy_fly_out_from == 0)
        this.runAction(cc.Sequence.create(cc.DelayTime.create(enemy_fly_out_duration), cc.CallFunc.create(this.reduce_flied_out, this), cc.MoveTo.create(1, cc.p(ship_pos.x-25, -25)), cc.Hide.create(), cc.MoveTo.create(0, cc.p(ship_pos.x-25, 610)), cc.Show.create(), cc.CallFunc.create(this.get_enemy_pos(which_enemy), this), cc.BezierTo.create(5, [cc.p(ship_pos.x-25, 600), cc.p(pos.x, 600), cc.p(epos.x,epos.y)]), cc.CallFunc.create(this.end_fly_out(which_enemy), this)));   
    
    else
        this.runAction(cc.Sequence.create(cc.DelayTime.create(enemy_fly_out_duration), cc.CallFunc.create(this.reduce_flied_out, this), cc.MoveTo.create(1, cc.p(ship_pos.x+25, -25)), cc.Hide.create(), cc.MoveTo.create(0, cc.p(ship_pos.x+25, 610)), cc.Show.create(), cc.CallFunc.create(this.get_enemy_pos(which_enemy), this), cc.BezierTo.create(5, [cc.p(ship_pos.x+25, 600), cc.p(pos.x-100, 600), cc.p(epos.x, epos.y)]), cc.CallFunc.create(this.end_fly_out(which_enemy), this)));
    },
    end_fly_out:function(which_enemy)
    {
         enemies_array[which_enemy].flied_out = 0;
    },
        get_enemy_pos:function(which_enemy)
    {
        epos = enemies_array[which_enemy].getPosition();
    },
    reduce_flied_out:function()
    {
        enemies_flied_out = 0;
    }
    

1 个答案:

答案 0 :(得分:0)

我通过以下方法解决了这个问题:(1)根据从中队飞出的敌方战斗机创建一个新的精灵(2)隐藏敌方战斗机(3)显示新精灵(4)新精灵充当敌人战斗机(5)隐藏精灵(6)显示敌方战斗机

感谢您的时间@Sebastian Vansteenkiste。如果防御者不射击精灵,即精灵完成其飞行,那么它会从底部飞出屏幕 cc.MoveTo.create(1,cc.p(ship_pos.x + 25,-25))。然后它再次出现在屏幕顶部的屏幕cc.MoveTo.create(1,cc.p(ship_pos.x + 25,610))。然后它飞回中队的位置。