Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.10.2002, 00:16
mainpart вне форума Посмотреть профиль Отправить личное сообщение для mainpart Найти все сообщения от mainpart
  № 1  
mainpart

Регистрация: Oct 2002
Сообщений: 10
По умолчанию Вопрос по прелоадингу и инициализации.

Есть swf.
подгружаем ее в mc.

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

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

Спасибо.

Старый 18.10.2002, 12:53
ZEX вне форума Посмотреть профиль Отправить личное сообщение для ZEX Найти все сообщения от ZEX
  № 2  
ZEX

Регистрация: Sep 2002
Адрес: Москва
Сообщений: 20
Не четко описана суть, но правило одно :
Все переменные( а также имена обьектов) обьявленные в одном муве, можно использовать в другом муве будь то он созданный или подгруженный , неважно.
Исходя из этого можно изьеб...ся.

Старый 18.10.2002, 12:56
lizergil вне форума Посмотреть профиль Отправить личное сообщение для lizergil Найти все сообщения от lizergil
  № 3  
lizergil
 
Аватар для lizergil

Регистрация: Jan 2002
Адрес: Королёв
Сообщений: 735
Отправить сообщение для lizergil с помощью ICQ Отправить сообщение для lizergil с помощью Yahoo
_level1.function(_root.var1, _root.var2);
если mc загружен на level 1 соответственно

Старый 18.10.2002, 16:16
mainpart вне форума Посмотреть профиль Отправить личное сообщение для mainpart Найти все сообщения от mainpart
  № 4  
mainpart

Регистрация: Oct 2002
Сообщений: 10
По умолчанию А мне кажется так нельзя.

Дело в том, что 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 на него самого, то все работает. где грабли?

Старый 18.10.2002, 16:35
lizergil вне форума Посмотреть профиль Отправить личное сообщение для lizergil Найти все сообщения от lizergil
  № 5  
lizergil
 
Аватар для lizergil

Регистрация: Jan 2002
Адрес: Королёв
Сообщений: 735
Отправить сообщение для lizergil с помощью ICQ Отправить сообщение для lizergil с помощью Yahoo
_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"

Старый 18.10.2002, 21:09
mainpart вне форума Посмотреть профиль Отправить личное сообщение для mainpart Найти все сообщения от mainpart
  № 6  
mainpart

Регистрация: Oct 2002
Сообщений: 10
Это все не в ту степь. Я знаю, что функции можно вызывать путем указания полного пути к ним. Т.е. _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 после его загрузки из главного модуля и в третьих, как передать параметр в эту функцию инициализации.

Старый 18.10.2002, 21:28
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 7  
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
clipName.onData=function(){trace("clip loaded");}
А так?

Старый 19.10.2002, 06:34
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 8  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
По умолчанию Re: А мне кажется так нельзя.

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

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

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

Создать новую тему   Часовой пояс GMT +4, время: 09:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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