2014-10-30 120 views
0

我正在制作一个随机生成硬币的游戏。一旦收集到一枚硬币(多次在屏幕上),它就会在另一个地方重新生成。我有这样做的几种方法,但要事先我需要这些问题的答案:如何检测显示对象中有多少个对象? (AS3)

  1. 我怎么会去检测有多少个对象在显示列表中?

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

所有的答案都提前赞赏。

+0

这完全取决于你的项目的设置。与'[yourDisplayObject] .numChildren'你会得到任何给定的显示列表中的孩子的数量。并且您使用removeChild自己从显示列表中删除这些对象,所以由您来“检测”它。例如,每次删除和Object时,都可以触发事件。 – DodgerThud 2014-10-30 13:54:12

回答

0

来检测物体的数量,你能做到这一点通过每个孩子都循环递归函数,并返回计数

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