AS3 + Starling - 查找未知的精灵

时间:2015-08-30 00:22:10

标签: actionscript-3 flash starling-framework

我有遗留代码项目。当Starling运行时,有时会出现一些Sprite并涵盖所有应用程序。

在纯闪存中,我使用“console”https://code.google.com/p/flash-console/wiki/GettingStarted来获取显示树中的对象。但它对Starling并不起作用。

我的想法是向root添加一些监听器,因为这个Sprite在显示列表树中。 并找到这个Spite的父母是谁。 有可能吗?

1 个答案:

答案 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 );
          }
      }
  }

希望你没有船上的精灵来排序!这是您可以递归检查所有唯一显示对象的一种方法。