如何检测显示对象中有多少个对象? (AS3)

时间:2014-10-30 13:49:48

标签: actionscript-3

我正在制作一个随机生成硬币的游戏。一旦硬币(一次在屏幕上多次)被收集,它就会在另一个位置重新生成。我有几种方法可以做到这一点,但为了推进我需要回答这些问题:

  1. 如何检测显示列表中有多少个对象?

  2. 如何检测何时从显示列表中删除对象?

  3. 所有答案都提前得到赞赏。

2 个答案:

答案 0 :(得分:1)

用于检测对象数量,你可以做一个循环遍历每个所有子节点的递归函数,并返回计数

import flash.display.DisplayObjectContainer;

function numAllChildren($do:DisplayObjectContainer):int{
    var $c:int = 0;
    for (var $i:int = 0; $i < $do.numChildren; $i++){
        if($do.getChildAt($i) is DisplayObjectContainer){
            $c += numAllChildren($do.getChildAt($i) as DisplayObjectContainer);
        }
        $c++;
    }
    return $c;
}

trace(numAllChildren(_mc));

要查看是否有更改,您可以在ADDED和/或REMOVED上使用事件监听器。但是您需要将它放在每个DisplayObject上 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html#ADDED http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html#REMOVED

答案 1 :(得分:0)

看看这里:DisplayObjectContainer

它包含您需要的所有内容,第二个问题请参阅Events部分。