Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   addChild in for loop! (http://www.flasher.ru/forum/showthread.php?t=146243)

Recky 02.11.2010 00:40

addChild in for loop!
 
Пытаюсь добавить несколько клипов сформированных из XML.
Остается только последний:
Код AS3:

        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

Код AS3:

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

Спасибо, все нашел!

Чтобы тема не пропадала зря, вот что получилось:
Код AS3:

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/showthre...E2%E0%ED%E8%E5


Часовой пояс GMT +4, время: 16:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.