2010-02-17 6 views
1

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

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

ответ

1

проблема заключалась в том, что «этап» и «это» не то же самое ... Вот почему я не мог говорить с тс. это работает:

var thumbContainer:MovieClip = new MovieClip(); 
thumbContainer.name = "thumbContainer"; 
addChild (thumbContainer); 
if (getChildByName("thumbContainer") != null) { 
    trace("exists") 
} 
+1

вы должны отметить Amarghosh как правильный ответ, так как ваше решение основано на его ответе. Все хорошо. чтобы опубликовать полное решение, чтобы показать, как вы решили начальную описанную проблему. Но, как правило, вы не отмечаете себя автором ответа, поскольку на самом деле он основан на другом ответе, который помог вам найти решение. так и без, вы бы застряли. Поэтому заимствуйте оригинального автора, хотя он не доставлял точные строки, которые вам нужны, что явно невозможно, так как у нас нет вашего полного кода. –

5
stage.addChild (thumbContainer); 
//... 
if (this.getChildByName("thumbContainer") != null) 

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

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

Таким образом, вы можете легко проверить с помощью stage.contains(thumbContainer);

+0

Ну мои проверки работы, так что я могу проверить, если тс существует, но теперь я хотите что-то с этим сделать. Это (имя экземпляра) не работает: var thumbContainer: MovieClip = new MovieClip(); thumbContainer.name = "test"; thumbContainer.x = 10; stage.addChild (thumbContainer); if (this.getChildByName ("test") == null) { \t trace ("something"); //Работает! \t this.getChildByName ("test"). X = 10; // Не работает! \t stage.test.x = 10; // Не работает! } – Edwinistrator

2

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

try{ 
    /// do something that will blow up... 
}catch(e:Error){ 
    trace("we had an error but its not fatal now..."); 
} 
+0

это хороший трюк! – Edwinistrator

+0

После много исследований, только это решение сработало для меня :) – mdikici

Смежные вопросы