actionscript-3: проверить, существует ли мувиклип - PullRequest
1 голос
/ 17 февраля 2010

У меня есть мувиклип, созданный со следующим кодом:

var thumbContainer:MovieClip = new MovieClip();
thumbContainer.name = "thumbContainer";
stage.addChild (thumbContainer);

Если окно становится больше / меньше, я хочу, чтобы все вернулось на место. Итак, у меня есть слушатель событий на сцене. Теперь я хочу посмотреть, существует ли этот mc для установки на место. Я пробовал разные способы, но продолжаю получать ошибку, которой не существует.

1120: доступ к неопределенному свойству thumbContainer.

if (this.getChildByName("thumbContainer") != null) {
 trace("exists")
}

и

if ("thumbContainer" in this) {
 trace("exists")
}

или

function hasClipInIt (mc: MovieClip):Boolean {
 return mc != null && contains(mc);
}

Ответы [ 3 ]

5 голосов
/ 17 февраля 2010
stage.addChild (thumbContainer);
//...
if (this.getChildByName("thumbContainer") != null) 

Вы добавляете thumbContainer к stage и проверяете его существование с помощью this. Измените stage на this или this на stage.

Тем не менее, еще более подходящий способ - сохранить ссылку на добавленный фрагмент ролика и проверить существование с помощью метода содержит . Он определяет, является ли указанный экранный объект дочерним по отношению к экземпляру DisplayObjectContainer или самому экземпляру. Поиск включает в себя весь список отображения, включая этот DisplayObjectContainer экземпляр, внуки, правнуки и т. Д.

Следовательно, вы можете легко проверить, используя stage.contains(thumbContainer);

2 голосов
/ 23 февраля 2010

если у вас возникли проблемы при возникновении ошибок, вы всегда можете прибегнуть к попытке перехвата

try{
  /// do something that will blow up...
}catch( e:Error ){
  trace( "we had an error but its not fatal now..." );
}
1 голос
/ 18 февраля 2010

проблема была в том, что «stage» и «this» - это не одно и то же ... поэтому я не мог поговорить с mc. это работает:

var thumbContainer:MovieClip = new MovieClip();
thumbContainer.name = "thumbContainer";
addChild (thumbContainer);
if (getChildByName("thumbContainer") != null) {
    trace("exists")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...