我正在制作一个随机生成硬币的游戏。一旦收集到一枚硬币(多次在屏幕上),它就会在另一个地方重新生成。我有这样做的几种方法,但要事先我需要这些问题的答案:如何检测显示对象中有多少个对象? (AS3)
我怎么会去检测有多少个对象在显示列表中?
如何检测对象何时从显示列表中删除?
所有的答案都提前赞赏。
我正在制作一个随机生成硬币的游戏。一旦收集到一枚硬币(多次在屏幕上),它就会在另一个地方重新生成。我有这样做的几种方法,但要事先我需要这些问题的答案:如何检测显示对象中有多少个对象? (AS3)
我怎么会去检测有多少个对象在显示列表中?
如何检测对象何时从显示列表中删除?
所有的答案都提前赞赏。
到这里看看:DisplayObjectContainer
它包含了所有你需要什么,你的第二个问题看Events
一部分。
来检测物体的数量,你能做到这一点通过每个孩子都循环递归函数,并返回计数
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
这完全取决于你的项目的设置。与'[yourDisplayObject] .numChildren'你会得到任何给定的显示列表中的孩子的数量。并且您使用removeChild自己从显示列表中删除这些对象,所以由您来“检测”它。例如,每次删除和Object时,都可以触发事件。 – DodgerThud 2014-10-30 13:54:12