Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Вопрос по прелоадингу и инициализации. (http://www.flasher.ru/forum/showthread.php?t=38564)

mainpart 18.10.2002 00:16

Вопрос по прелоадингу и инициализации.
 
Есть swf.
подгружаем ее в mc.

_root.createEmptyMovie("asdf",level);
_root.asdf.loadMovie("external.swf");

В этой swf есть функция инициализации, принимающая параметры. Как ей эти параметры передать? дело в том, что _root.asdf.onLoad=function_name не воспринимает параметры. Мы можем просто дать ссылку на функцию, либо объявить ее, как анонимную. А как параметры передать?

Спасибо.

ZEX 18.10.2002 12:53

Не четко описана суть, но правило одно :
Все переменные( а также имена обьектов) обьявленные в одном муве, можно использовать в другом муве будь то он созданный или подгруженный , неважно.
Исходя из этого можно изьеб...ся.

lizergil 18.10.2002 12:56

_level1.function(_root.var1, _root.var2);
если mc загружен на level 1 соответственно

mainpart 18.10.2002 16:16

А мне кажется так нельзя.
 
Дело в том, что onLoad принимает ссылку на функцию, а в ссылке, как известно мы не можем передать параметры.

Т.е. movie.onLoad=function_name(var1,var2) просто присвоит onLoad'у результат выполнения функции.

Сегодня столкнулся с новой проблемой - событие onLoad вообще не возникает для клипов подгруженных по loadMovie

Т.е. _root.createEmptyMovie("test",level);
_root.test.loadMovie("external.swf");
_root.test.onLoad=function() { trace("test");}

не вызывается вообще, хотя кол-во загруженных байт совпадает с тотальным у этого внешнего swf.
Одновременно, если внутри external.swf прописать onLoad на него самого, то все работает. где грабли?

lizergil 18.10.2002 16:35

_level1.function(_root.var1, _root.var2);
Это запуск функции с именем function с level 1


_root.test.loadMovie("external.swf");
_root.test.onLoad=function() { trace("test");
здесь трэйс включиться после загрузки mc test,
"_root.test.onLoad"

mainpart 18.10.2002 21:09

Это все не в ту степь. Я знаю, что функции можно вызывать путем указания полного пути к ним. Т.е. _root.mc1.mc2.mc3. ... mcN.our_function(var1,...,varN) прекрасно работает. Я говорю про создание ссылки на функцию, ибо хендлер onEvent во флеше принимает только ссылку на функцию. поясню на примере:
есть функция

function asdf(variable){
trace("function passed with "+variable);
return "aaa";
}


тогда если мы присваем событию onEvent какого-либо клипа asdf("test") то ему присвоится значение "aaa", как значение возвращаемой функции. Если же мы присвоим событию onEvent результат выполнения функции eval("this.asdf") то все получится - по возникновению события вызовется именно эта функция.
Т.е.
this.mc1.onLoad=asdf(variable); - не правильно
this.mc1.onLoad=eval("this.asdf"); - правильно

Теперь следующий вопрос, вернее переформулировка первого.

файл external.swf. Один фрейм.
В этом первом фрейме функция initSwf(a,b);

файл root.swf
конструкция вида
for (i=1;i<5;i++){
_root.createEmptyMovieClip("clip"+i,i);// создаем clip1,clip2,clip3 и т.д.
clipName=eval("_root.clip"+i);
clipName.loadMovie("external.swf");
clipName.onLoad=function(){trace("clip loaded");}
}

Здесь начинаются проблемы.
Во первых, onLoad для этого клипа не вызывается никогда. Во вторых, как вызвать функцию инициализации в external.swf после его загрузки из главного модуля и в третьих, как передать параметр в эту функцию инициализации.

derhab 18.10.2002 21:28

clipName.onData=function(){trace("clip loaded");}
А так?

Nox Noctis 19.10.2002 06:34

Re: А мне кажется так нельзя.
 
Цитата:

Оригинал написал(а) mainpart
где грабли?
грабли стандартные =)
- если присвоить онЛоад ДО лоадмуви - то этот метод будет удален как и все остальные переменные в таргете сразу при вызове лоадмуви.
- если присвоить онЛоад СРАЗУ ПОСЛЕ лоадмуви, то таргет еще не погрузился на сцену - переменные в нем не инициализируются и онЛоад просто не создастся.

то есть ни до ни после хэндлер присвоением не создать.

можно
либо сделать onClipEvent(load) на самом клипе - тогда он будет работать (но тогда нужен либо аттач либо дубликейт - скриптом такое не сваять)
либо вызывать онЛоад изнутри загружаемого клипа


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

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