Actionscript 3.0 - 检测已放置在舞台上的多个实例并将它们添加到数组中

Posted

技术标签:

【中文标题】Actionscript 3.0 - 检测已放置在舞台上的多个实例并将它们添加到数组中【英文标题】:Actionscript 3.0 - detecting multiple instances already placed on stage and adding them to an array 【发布时间】:2015-05-13 08:23:51 【问题描述】:

现在我正在尝试制作一个游戏,其中有几十个相同、相同的积木在舞台上,当玩家击中积木时,它就会停止。现在,我已经弄清楚如何使用数组在代码中自动创建块的多个版本并将它们放置在舞台上,但我想知道 Actionscript 是否有任何方法可以检测放置的同一对象的多个实例通过在 Flash 中拖放,然后将它们全部添加到数组中?

例如,我不想让代码将块放置在特定的 x 和 y 坐标处,而是希望自己在 Flash 编辑器中将它们放置在舞台上,然后让它们全部成为同一个数组或类或其他东西的一部分这允许相同的命中测试。

谢谢!

【问题讨论】:

【参考方案1】:

使这些块成为自定义类的实例(导出为 -> 自定义类)。在显示列表上运行一个循环并检查对象是否是该自定义类的实例,例如:

for(var i:int = 0; i < this.numchildren; i++)

    if(this.getChildAt(i) is MyCustomClass)
    
        myarray.push(this.getChildAt(i));
    

【讨论】:

this.numchildren in a for loop 是一种非常糟糕的编码实践。使用:var lng:int = numChildren ; for (var i:int = 0 ; i &lt; lng ; i++) ... 我同意存储在变量中理论上更好,但只有在性能至关重要时,在大多数正常情况下,它甚至不会产生速度差异。在这方面这不是一个不好的做法,当性能和代码执行速度是强制性的时,这是一个不好的做法。 性能和 AS3 编码标准在所有情况下都很重要,没有任何理由不做不好的做法而不是好的做法。

以上是关于Actionscript 3.0 - 检测已放置在舞台上的多个实例并将它们添加到数组中的主要内容,如果未能解决你的问题,请参考以下文章

在Adobe Animate ActionScript 3.0中循环

在 ActionScript (3.0) 中干净地合并两个数组?

ActionScript 2.0 和 ActionScript 3.0 有啥区别

ActionScript 3 TextManager ActionScript 3.0类

ActionScript 3 ActionScript 3.0算术运算符

ActionScript 3 ActionScript 3.0计时器事件