Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамическое создание функций? (http://www.flasher.ru/forum/showthread.php?t=93721)

Dragon rideR 27.03.2007 14:12

Динамическое создание функций?
 
Подскажите пожалуйста, добавляю в цикле мувики. Нужно каждому мувику динамически присвоить обработчик on (press). Как это сделать?
Код:

for (i=0;i<_root.image.length;i++) {
        attachMovie("maika","maika"+i,i);
        this["maika"+i].loadMovie(_root.image[i], 100);
        this["maika"+i]._y=i*100;
};

P.S. Заранее спасибо :away:

CorC 27.03.2007 14:13

в том же for onPress и прописывайте :)
только надо дождаться конца загрузки
и лучше делать это с MovieClipLoader

Dragon rideR 27.03.2007 14:49

:umnik2: Прочел в справочнике, но только ничего не получается
Код:

function add_img():Void {
        var loader:MovieClipLoader = new MovieClipLoader();
        var listener:Object; // Создаем листенер для событий загрузчика
    loader.addListener(listener);
        for (i=0;i<_root.image.length;i++)
                {
                        attachMovie("maika","maika"+i,i);
                        loader.loadClip(_root.image[i], this["maika"+i]);
                        listener.onLoadComplete = function(maiki:MovieClip):Void
                        {
                                this["maika"+i]._y=i*100;
                                this["maika"+i].onPress= function():Void
                                {
                                trace("Событие клипа "+this["maika"+i]);
                                };
                        };
                       
                };
};

Подскажите что я не так сделал?

etc 27.03.2007 14:54

listener один на всех. А должен быть у каждого свой.

Dragon rideR 27.03.2007 15:09

Я пыался сделать чтото вроде
listener.onLoadComplete = function(this["maika"+i]:MovieClip):Void
Но он выдает ошибку что нужно имя клипа в параметре (Parameter name expected)
Как указать в параметре имя подгружаемого клипа?
P.S. И еще после добавления изображения с помощью loader.loadClip(_root.image[i], this["maika"+i]); перестает работать обработчик onPress (

etc 27.03.2007 15:43

Нужно объявить переменную mc, а не передавать туда this['maika'…

Код:

function add_img() {
        for (i=0;i<_root.image.length;i++)
                {
                        var mc = attachMovie("maika","maika"+i,i);
                        var loader = new MovieClipLoader();
                        loader.i = i;
                        loader.onLoadInit = function(mc) {
                              mc._x = this.i*100;
                              mc.onRelease = function() {
                                      trace(this);
                              }
                        }
                        loader.addListener(loader);
                        loader.loadClip(_root.image[i], mc);
                };
};

Если не заработает, напишешь. Мне проверять не на чем.

Dragon rideR 27.03.2007 15:55

Вы ГЕНИЙ! Спасибо огромное )) Теперь буду разбираться как это работает )
Последний вопрос у меня клип контейнер находится в ScrollPane и при загрузке клипов размеры этой панели не увеличиваются (не появляются боковые скролы)

CorC 27.03.2007 16:13

Вложений: 1
а в чем собственно вопрос?
"как увеличить панель?" :)
кстати вот примерчик к предыд вопросу

Dragon rideR 27.03.2007 16:21

Спасибо большое за пример, разобрался )
А по поводу панели: если загружать в нее клип с заведомо большим размером, то боковые скролы появляются на ура. Но если я с помощью loadClip добавляю много клипов со смещение по x или y то изображения уходят за края панели, а скролы не появляются (
[iNils: Апы расцениваются как флуд и наказываются]


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

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