PDA

Просмотр полной версии : addChild in for loop!


Recky
02.11.2010, 00:40
Пытаюсь добавить несколько клипов сформированных из XML.
Остается только последний:
for (var bNm:String in buttonsXML.factory){
var btnClip = new MovieClip();
btnClip.name = buttonsXML.factory[bNm].id;
btnClip.x = buttonsXML.factory[bNm].xcords;
btnClip.y = buttonsXML.factory[bNm].ycords;
btnClip.addChild(iconLoader.content);
addChild(btnClip);
}

Хотя по идее каждый раз при каждом новом цикле переменная btnClip должна быть заново создана.

Что я делаю неправильно?

expl
02.11.2010, 00:50
Да, классов Вы должны много насоздавать,
только вот сомневаюсь в правильности обхода buttonsXML.factory (Вы бы xml-ку, что парсите, выложили), есть ощущение, что все узлы в строковом виде (bNm:String) имеют одинаковое значение, поэтому buttonsXML.factory[bNm] возвращает одно и то же.
Попробуйте потрейсить buttonsXML.factory[bNm].xcords, например и bNm в теле цикла.

cleptoman
02.11.2010, 00:58
var xml:XML;
var list:XMLList = buttonsXML.factory;
for each(xml in list){
var btnClip = new MovieClip();
btnClip.name = xml.id;
btnClip.x =xml.xcords;
btnClip.y = xml.ycords;
btnClip.addChild(iconLoader.content);// вот тут видимо и ошибка..вы просто в каждой итерации контент вытаскиваете из контейнера и суеет в следующий
addChild(btnClip);
}

Recky
02.11.2010, 11:51
Да действительно похоже что так! Если добавлять Circle то все ок!
В связи с этим вопрос а как быть? Как то надо перенаправить iconLoader.content
в разные MovieClip?

cleptoman
02.11.2010, 11:55
про клонирование загруженного контента тут тем море поднималось. поищите

Recky
02.11.2010, 12:41
Спасибо, все нашел!

Чтобы тема не пропадала зря, вот что получилось:
var iconImg:BitmapData = Bitmap(iconLoader.content).bitmapData;

for (var bNm:String in buttonsXML.factory)
{
//trace(buttonsXML.factory[bNm].@Name);
var btnClip:MovieClip = new MovieClip();
btnClip.name = buttonsXML.factory[bNm].id;
btnClip.x = buttonsXML.factory[bNm].xcords;
btnClip.y = buttonsXML.factory[bNm].ycords;
btnClip.addChild(new Bitmap(iconImg,"auto",true));
btnClip.buttonMode = true;
addChild(btnClip);
}

Нашел вот тут: http://www.flasher.ru/forum/showthread.php?t=142076&highlight=%EA%EB%EE%ED%E8%F0%EE%E2%E0%ED%E8%E5