Форум 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=102002)

AL.exe 07.10.2007 05:15

Понятно, как вызвать метод мувиклипа, из функции, в котором она описана.

А как вызвать (используя относительный, а не полный путь и без изврата вроде _parent.имя-текущего-клипа) метод клипа с динамическим именем, созданным внутри мувиклипа?

Т.е., к примеру, есть мувиклип _root.fire

В нем объявлена некая функция, которая создает в нем мувиклипы с именем типа "particle"+i

Если использовать
Код:

this["particle"+i].attachMovie(...)
, то ничего не произойдет. Замечено, что по статичной ссылке легко обращаться (просто писать без this):
Код:

particle18.attachMovie(...)
вызывается без проблем. Но ведь нельзя использовать оператор [] для указания динамического имени, если перед ним ничего не ставить... Помогите разобраться, пожалуйста.

Переменные-то просто задавать таким образом:

Код:

set("particle"+i+"_yscale",scale_y)
А как вызвать метод?

Так и не разобрался, сделал по-другому.

Но вопрос все равно актуален...

udaaff 07.10.2007 06:10

Вложений: 1
Все работает. Вложение 17872.

iNils 07.10.2007 07:16

AL.exe, есть кнопка http://www.flasher.ru/forum/images/r...ttons/edit.gif, поэтому не надо создавать несколько сообщений подряд, надо исправить последнее в теме.

AL.exe 10.10.2007 22:19

Видимо, это из раздела плясок с бубном. Ваш код работает - вставляю его в свой ролик - перестает работать :)

iNils 10.10.2007 22:22

Случайно для ролика не указан AS1 в качестве версии скрипта?

AL.exe 10.10.2007 23:07

Нет, AS2

udaaff 10.10.2007 23:26

Выложите исходник.

AL.exe 10.11.2007 00:11

Да что ж такое... опять с этой проблемой столкнулся. С ума сойду, наверное.

Код:

if(this["container"+number].imageLoaded==false){//если картинка еще не была загружена
               
                this.mcLoader = new MovieClipLoader();
                this.loadListener = new Object();
               
                loadListener.onLoadComplete = function() {        //вызывается при полной загрузке картинки
                trace("Картинка "+prefix+number+postfix+" загружена")
                       
                        trace(this["container"+number]) // ПРОБЛЕМА: возвращает undefined =(
                        trace(container1) //возвращает полный путь, все ок
                        trace(_root.switcherMC["container"+number])//возвращает полный путь, все ок
                        //this["container"+number]._alpha=0
                        //setInterval(fadeIn,transition_update_interval)
                }
               
                mcLoader.addListener(loadListener);
                mcLoader.loadClip(prefix+number+postfix, this["container"+number]);
                //trace(this["container"+number])
        }

Я, наеврное, чего-то не понимаю в относительности объектов... что здесь не так? Подскажите, пожалуйста... опять два часа уьил и понять не могу... может, компилятор побился, а не я тупой? :((

Upd: есть подозрение, что this ссылается тут на сам листенер - выдает [object Object]

Что делать? :(

etc 10.11.2007 00:54

Ну правильно, ведь this ссылается на loadListener. Необходимо использовать Delegate.

AL.exe 10.11.2007 00:57

Уже копаюсь в описании к нему... странно, что так сделано. Вернее, странно то, что работает вот это:

Код:

trace(container1) //возвращает полный путь, все ок


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

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