Как проверить, существует ли что-то на сцене Flash? - PullRequest
0 голосов
/ 13 февраля 2010

Как проверить, что что-то уже существует на сцене? Разве он не должен распечатывать «не существует» для первого и «существовать» для второго? Но он печатает "не существует" для обоих.

Я добавил таймер, потому что подумал, что нужно немного подождать, пока он добавится на сцену, но он не работает.

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");
    }
}

Ответы [ 2 ]

1 голос
/ 13 февраля 2010

Метод getChildByName учитывает свойство myDisplayObject.name, а не имя переменной, которая на него указывает. Попробуйте установить свойство, и теперь оно должно существовать так, как вы его ищете.

idonnoe.name = "idonnoe";
0 голосов
/ 13 февраля 2010

Чаще всего ссылаться на ваши объекты напрямую. Это облегчает обработку таких случаев. Метод 'contains(displayObject:DisplayObject)' DisplayObjectContainer действительно удобен для определения, присоединен объект или нет к списку отображения.

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...