首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能让cc.point和延迟一起工作

不能让cc.point和延迟一起工作
EN

Stack Overflow用户
提问于 2014-07-31 00:34:02
回答 1查看 365关注 0票数 1

好吧,想想太空入侵者和加拉加。我在屏幕顶端有一个敌人中队。它们作为一个组向左、右、下移动屏幕。每隔一段时间,敌人就会离开战斗群,攻击玩家的战舰。做一些贝塞尔曲线,试图攻击玩家的飞船。如果敌方战斗机没有击中,他(1)飞离屏幕底部,隐藏,移动到屏幕顶部,出现并飞回到它在中队的位置。问题是敌机飞回它离开中队的位置,而不是它现在的位置。

  1. 设置变量new_pos
  2. 调用带有延迟的动作函数来处理bezier飞行路径。

行动(bezier ),(延迟5秒),(隐藏敌人战斗机),(延迟1秒),(将敌人战斗机移至屏幕上方),(显示敌人战斗机),(callfunc以使敌人战斗机在中队中的新位置),(bezier返回新位置)

CallFunc似乎在父函数被调用时就会被调用。推迟之后不行。我所期待的可能吗?

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2014-08-02 00:27:57

我解决这一问题的方法是:(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))的屏幕上重新出现。然后它飞回中队的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25049163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档