【问题标题】:To reset game, will I need to add objects dynamically?要重置游戏,我需要动态添加对象吗?
【发布时间】:2014-04-11 00:26:58
【问题描述】:

晚上好/早上好。

我正在 As3 中创建一个游戏,其中敌人是添加而不是动态添加的。

if(hero attacks enemy)
{ then parent.removeChild(enemy) }

当英雄攻击敌人时,我认为敌人会将其从显示列表中删除。

但是当您重置关卡时,即返回开始菜单并返回关卡时,您会看到敌人不在关卡中,因为它们已被移除。

我的问题是,有没有办法可以重置该帧中的显示对象,在 As2 中我刷新了 Flash 电影。但这在编码方面并不好,因为它表明您没有发展或学习。

如果没有办法,您会建议动态添加将要删除的对象吗?

另一个问题是我的关卡在一个容器中。

//on the stage, there is a movieclip called container. 
//In this container mc(movie clip) it contains the whole level, including platforms,
  //enemies and props 

如果我从那个容器中移除一个道具,为了重置游戏我会这样做

container.addChild(prop)
//the question is that how do I set it's x and y position?

谢谢你,我会感谢每一个反馈和建议。

【问题讨论】:

    标签: actionscript-3 flashdevelop


    【解决方案1】:

    是的,当您动态删除它们时,您需要再次动态添加它们才能重置它们。您可以预先定义它们的位置并重新设置它们,或者您可以隐藏这些敌人并让它们再次可见,游戏重置。取决于您的代码和结构。

    【讨论】:

    • 如果我隐藏了敌人,visible = false。除非我将其从阵列中移除,否则敌人仍会与我的玩家互动。但我无法从数组中删除它,因为我无法从我的敌人类中访问 for 循环。
    • “互动”是什么意思?您可以禁用它们(使用 mouseEnabled 或使用其中的任何类型的变量)。
    • like hit 与敌人的测试将是真实的,因为它在舞台上但不可见。但我要做的是将敌人移出屏幕并重置他们的位置而不使其可见。当敌人死亡时,它会进入一个空白关键帧。
    【解决方案2】:

    理想情况下,最好不要将它们从显示列表中删除,而是将它们隐藏并放置并将它们的位置重置回原来的位置。

    一个好的做法是尽可能避免实例化失控的机会;这意味着,如果您要在每次生成和杀死敌人时实例化并移除敌人,那么垃圾收集器必须非常努力地跟上。更好的方法是拥有一个足够大的敌人池,可以同时支持尽可能多的敌人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多