Просмотр полной версии : Вызов метода клипа с динамическим именем
Понятно, как вызвать метод мувиклипа, из функции, в котором она описана.
А как вызвать (используя относительный, а не полный путь и без изврата вроде _parent.имя-текущего-клипа) метод клипа с динамическим именем, созданным внутри мувиклипа?
Т.е., к примеру, есть мувиклип _root.fire
В нем объявлена некая функция, которая создает в нем мувиклипы с именем типа "particle"+i
Если использовать this["particle"+i].attachMovie(...), то ничего не произойдет. Замечено, что по статичной ссылке легко обращаться (просто писать без this):
particle18.attachMovie(...) вызывается без проблем. Но ведь нельзя использовать оператор [] для указания динамического имени, если перед ним ничего не ставить... Помогите разобраться, пожалуйста.
Переменные-то просто задавать таким образом:
set("particle"+i+"_yscale",scale_y)
А как вызвать метод?
Так и не разобрался, сделал по-другому.
Но вопрос все равно актуален...
AL.exe, есть кнопка http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif, поэтому не надо создавать несколько сообщений подряд, надо исправить последнее в теме.
Видимо, это из раздела плясок с бубном. Ваш код работает - вставляю его в свой ролик - перестает работать :)
Случайно для ролика не указан AS1 в качестве версии скрипта?
Да что ж такое... опять с этой проблемой столкнулся. С ума сойду, наверное.
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]
Что делать? :(
Ну правильно, ведь this ссылается на loadListener. Необходимо использовать Delegate.
Уже копаюсь в описании к нему... странно, что так сделано. Вернее, странно то, что работает вот это:
trace(container1) //возвращает полный путь, все ок
Потому что происходит поиск в области выше. А если указывать this, то мы ограничиваем область.
А, верно ведь не работает и это:
trace(this.container1)
UPD:
Проблему решил без Deligate:
if(this["container"+number].imageLoaded==false){//если картинка еще не была загружена
this.mcLoader = new MovieClipLoader();
this.loadListener = new Object();
path=this["container"+number]
loadListener.onLoadComplete = function() { //вызывается при полной загрузке картинки
trace("Картинка "+prefix+number+postfix+" загружена")
trace(path) //возвращает требуемый путь
//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])
}
О боже. Ну не хотят у нас люди чему-нибудь учиться.
А чем это плохо?
Я добавил лишнюю строку кода вместо использования двух компонентов (eventDispatcher'а и Delegate - я так понял, что последний работает с первым).
Можно было посмотреть в код Delegate.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.