【问题标题】:How to check if something already exist on the Flash stage?如何检查 Flash 舞台上是否已经存在某些内容?
【发布时间】:2011-01-16 10:10:34
【问题描述】:

如何检查舞台上是否已经存在某些东西?它不应该为第一个打印“不存在”而为第二个打印“存在”吗?但它对两者都打印出“不存在”。

我添加了一个计时器,因为我认为需要等待一段时间才能将其添加到舞台,但它不起作用。

var idonnoe:TextField = new TextField();

if (Boolean(this.getChildByName('idonnoe'))) 
  {
     trace("exists");
  }
  if (!Boolean(this.getChildByName('idonnoe'))) 
  {
     trace("doesn't exist");
}

addChild(idonnoe);
idonnoe.text = "hello";

var delay1:Timer = new Timer(1000, 1);
delay1.start();
delay1.addEventListener(TimerEvent.TIMER_COMPLETE, afterDelay);

function afterDelay(e:TimerEvent) :void {
    if (Boolean(this.getChildByName('idonnoe'))) 
      {
         trace("exists");
      }
      if (!Boolean(this.getChildByName('idonnoe'))) 
      {
         trace("doesn't exist");
    }
}

【问题讨论】:

    标签: flash actionscript-3 flash-cs4


    【解决方案1】:

    getChildByName 方法考虑了myDisplayObject.name 属性,而不是指向它的变量的名称。尝试设置该属性,它现在应该按照您搜索的方式存在。

    idonnoe.name = "idonnoe";
    

    【讨论】:

    • 你已经不再需要延迟了。
    【解决方案2】:

    直接引用您的对象更为常见。这使得处理这种情况更容易。 DisplayObjectContainer 的 'contains(displayObject:DisplayObject)' 方法非常方便地找出对象是否附加到显示列表。

    var displayObject:TextField = new TextField(); // any sublclass of DisplayObject
    addChild(displayObject);
    
    // test if the current display list contains the sprite
    trace( contains(displayObject) );
    
    // test if the sprite is attached to the stage
    trace( displayObject.stage != null );
    
    // test if the sprite is attached to ANY display list
    trace (displayObject.parent != null );
    

    【讨论】:

    • 你什么时候会使用 Sprite?我所知道的 Sprite 是一个没有时间线的电影剪辑。
    • 哦,抱歉,我只使用了精灵,但它可能是 TextField、MovieClip 或其他任何真正扩展 DisplayObject 的东西。将编辑...
    • 为了快速回答您的问题,sprite 是一个“较轻”的 DisplayObject,因为它不包含与时间线相关的方法。此外,精灵不是动态类,因此您无法动态创建字段(这会使执行速度变慢)。基本上,如果您的 DisplayObject 不包含任何时间线,请尝试使用 Sprite 而不是 MovieClip。
    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2011-10-11
    • 2012-08-22
    • 2010-12-09
    • 2014-01-26
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多