我有遗留代码项目。当Starling运行时,有时会出现一些Sprite并涵盖所有应用程序。
在纯闪存中,我使用“console”https://code.google.com/p/flash-console/wiki/GettingStarted来获取显示树中的对象。但它对Starling并不起作用。
我的想法是向root添加一些监听器,因为这个Sprite在显示列表树中。 并找到这个Spite的父母是谁。 有可能吗?
答案 0 :(得分:0)
找到这个Spite的父母是谁。有可能吗?
如果您正在尝试查找显示对象,并且您不知道它来自哪里,您可以尝试做的一件事是在帧事件中,跟踪添加到显示列表中的所有新精灵。然后你可以从那里倒退。例如
// keep track of unique display objects
private var _displayList:Array = [];
public function Main()
{
addEventListener( Event.ENTER_FRAME, trackDisplayList );
}
private function trackDisplayList( event:Event ):void
{
trackAsset( stage );
}
private function trackAsset( asset:* ):void
{
var i:int = -1;
while( ++i < asset.numChildren )
{
var child:* = asset.getChildAt( i );
if ( _displayList.indexOf( child ) == -1 )
{
_displayList.push( child );
trace( "tracking display object: " + child.name );
}
if ( child.numChildren > 0 )
{
trackAsset( child );
}
}
}
希望你没有船上的精灵来排序!这是您可以递归检查所有唯一显示对象的一种方法。