Страница 1 из 1

Помогите с кодом (цикл + loader)

Добавлено: 23 янв 2013, 15:09
mastaxys
Доброго дня, есть такой код:

Код: Выделить всё

        function isAddFriends()        {            var loader:Loader = new Loader();            var loader2:Loader = new Loader();            var loader3:Loader = new Loader();            var loader4:Loader = new Loader();            var loader5:Loader = new Loader();                        addChild(isAddFriends_panel);                loader.load(new URLRequest(isAppfriends[0].photo_medium));            loader2.load(new URLRequest(isAppfriends[1].photo_medium));            loader3.load(new URLRequest(isAppfriends[2].photo_medium));            loader4.load(new URLRequest(isAppfriends[3].photo_medium));            loader5.load(new URLRequest(isAppfriends[4].photo_medium));                        //если друзей меньше 5, то нужно делать отображение через цикл            //пока не удалось :  .item['i'] или .['item' + i] не работает            isAddFriends_panel.container.item0.image.addChild(loader);             isAddFriends_panel.container.item0.placeTF.text = "1";            isAddFriends_panel.container.item0.pointsTF.text = "0 $"            isAddFriends_panel.container.item0.nameTF.text = isAppfriends[0].first_name + " " + isAppfriends[0].last_name;            isAddFriends_panel.container.item1.image.addChild(loader2);             isAddFriends_panel.container.item1.placeTF.text = "2";            isAddFriends_panel.container.item1.pointsTF.text = "0 $"            isAddFriends_panel.container.item1.nameTF.text = isAppfriends[1].first_name + " " + isAppfriends[1].last_name;            isAddFriends_panel.container.item2.image.addChild(loader3);             isAddFriends_panel.container.item2.placeTF.text = "3";            isAddFriends_panel.container.item2.pointsTF.text = "0 $"            isAddFriends_panel.container.item2.nameTF.text = isAppfriends[2].first_name + " " + isAppfriends[2].last_name;            isAddFriends_panel.container.item3.image.addChild(loader4);             isAddFriends_panel.container.item3.placeTF.text = "4";            isAddFriends_panel.container.item3.pointsTF.text = "0 $"            isAddFriends_panel.container.item3.nameTF.text = isAppfriends[3].first_name + " " + isAppfriends[3].last_name;            isAddFriends_panel.container.item4.image.addChild(loader5);             isAddFriends_panel.container.item4.placeTF.text = "5";            isAddFriends_panel.container.item4.pointsTF.text = "0 $"            isAddFriends_panel.container.item4.nameTF.text = isAppfriends[4].first_name + " " + isAppfriends[4].last_name;          }
количество друзей это isAppfriends.length.

На панели пять ячеек, как правильно организовать цикл согласно количеству друзей? Чтобы если количество друзей меньше пяти, лишние loader'ы не грузились.

Не знаю понятно объяснил или нет, спрашивайте - отвечу...

Re: Помогите с кодом (цикл + loader)

Добавлено: 23 янв 2013, 18:36
Alazaur

Код: Выделить всё

function isAddFriends(){    var length:int = (isAppfriends.length <= 5)?isAppfriends.length:5;    for (var i:int = 0; i < length; i++)    {        var loader:Loader = new Loader();        loader.load(new URLRequest(isAppfriends[i].photo_medium));        isAddFriends_panel.container.getChildByName("item" + i).image.addChild(loader);        isAddFriends_panel.container.getChildByName("item" + i).placeTF.text = (i + 1).toString();        isAddFriends_panel.container.getChildByName("item" + i).pointsTF.text = "0 $"        isAddFriends_panel.container.getChildByName("item" + i).nameTF.text = isAppfriends[i].first_name + " " + isAppfriends[i].last_name;    }}

Re: Помогите с кодом (цикл + loader)

Добавлено: 23 янв 2013, 19:10
Alazaur
Забыл сказать, вместо

Код: Выделить всё

isAddFriends_panel.container.getChildByName("item" + i).image.addChild(loader);
в вашем случае можно писать и так:

Код: Выделить всё

isAddFriends_panel.container["item" + i].image.addChild(loader);

Re: Помогите с кодом (цикл + loader)

Добавлено: 24 янв 2013, 12:13
mastaxys
Спасибо... Оказывается я так уже делал на AS2 только подзабыл ))

Ещё вопрос: А можно ли по такому принципу задавать имена функций?

Например добавляю слушателя:

Код: Выделить всё

isAddFriends_panel.container.item1.addEventListener(MouseEvent.MOUSE_DOWN, item1_btnDown);
можно ли сделать что то типа этого:

Код: Выделить всё

isAddFriends_panel.container["item" + i].addEventListener(MouseEvent.MOUSE_DOWN, "item" + i + "_btnDown";
?

Re: Помогите с кодом (цикл + loader)

Добавлено: 24 янв 2013, 13:38
Alazaur
Вы хотите интерпретатор ActionScript'a на самом ActionScript'е написать? :D Не стоит этого делать :)
Если у вас функции выполняют одни и те же действия только для разных кнопок логично будет для всех указать обработчиком события одну функцию. Например так:

Код: Выделить всё

for( ... ) {   isAddFriends_panel.container["item" + i].nameTF.text = isAppfriends[i].first_name + " " + isAppfriends[i].last_name;   isAddFriends_panel.container["item" + i].addEventListener(MouseEvent.MOUSE_DOWN, handlerItemsDown);}   private function handlerItemsDown(e:MouseEvent):void {   var item:MovieClip = e.currentTarget as MovieClip; //Предполагаю что item0 - item4 MovieClip'ы;   trace(item.nameTF.text);}
Если же логика во всех функциях разная, то делать что-то подобное не стоит, вы только затрудните восприятие кода.

Re: Помогите с кодом (цикл + loader)

Добавлено: 24 янв 2013, 20:08
mastaxys

Код: Выделить всё

    var item:MovieClip = e.currentTarget as MovieClip; //Предполагаю что item0 - item4 MovieClip'ы; 
Круто! Это то что мне надо! Дааа.. AS3 гибче AS2 )))

Огромное спасибо!