Просмотр полной версии : Обращение к детям addChild
Подскажите пожалуйста как сделать так чтобы можно было обращаться к динамически созданым детям, или как задать им имя для последующего обращения?
for (var i:* = 0; i<5 ; ++i)
{
var clip:MovieClip = new MovieClip;
addChild(clip)
}
Если можно то с примером)
Зарание Спасибо!:victory:
proxiServer
19.05.2010, 16:48
var mcArr:Array = new Array;
for (var i:* = 0; i<5 ; ++i)
{
var clip:MovieClip = new MovieClip;
addChild(clip)
mcArr.push(clip);
}
removeChild (mcArr[2]);
Тоесть все обращения надо проводить через массивы?
orcpochta
19.05.2010, 16:52
Подходов много.
Этот подход дает имя, но никогда так не делайте)))
var s:Sprite = new Sprite( );
addChild(s);
s.name = "clip";
s.x = 100;
trace(s.x);
trace(getChildByName("clip").x);
Этот подход из этой же серии, но другой и тоже плох:
var str:String = "clip";
var clip:Sprite;
for (var i:uint = 0; i < 5 ; i++)
{
clip = new Sprite( );
clip.x = 10 * i;
this[str + i] = clip;
}
trace(this[str + 3].x);
Хороший подход хранить элементы, если к ним понадобится доступ в массиве (или лучше векторе):
var clips:Array = [];
var clip:Sprite;
for (var i:uint = 0; i < 5 ; i++)
{
clip = new Sprite( );
clip.x = 10 * i;
clips[i] = clip; //эту строчку можно заменить на clips.push(clip);
}
trace(clips[3].x);
Psycho Tiger
19.05.2010, 19:11
Этот подход из этой же серии, но другой и тоже плох:
Только при условии динамичности класса.
getChildAt до кучи.
а у меня проблемка с детьми: есть клас game, который определен основным и клас drop . Я хотел чтоб в класе game создался масив drop, но когда я пробую сделать вышеуказаными методами, во всех случяях одинаковый ерор
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at drop()
at game()
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.