PDA

Просмотр полной версии : загрузка swf (знаю что надоела)


bettyshort
07.07.2010, 14:46
Ребят ну не издевайтесь пожалуйста, вы нам говорите что мол примеров дофига было "ищи в хэлпе" (вообшще не понимаю что это...) ну напишите пожалуйста пару гребаных кода чтобы от вас люди отстали....посмотрела оналы в поисках, всем таким как я, умные жуки отвечают в одну строчку чтобы отвязалась и а я должна понимать что он имел ввиду... обидно же, вы точно также начинали как и мы, когдато ...(((

помогите, вот моя проблема, раз 3тий наверное выкладываю....

суть такова...

делаю сайт. много swf'ок, среди них main.swf в ней баттон button, при его нажатии надо открыть другую swf another.swf, в ней кнопа back по нажатию которой возвращаемся в main.swf

подскажите коды плиз, не посылайте никуда, легче будет вам не полениться и написать код на пару минут чем я вторую неделю буду мозг *** и меня уволят =(

надеюсь на вас друзья.

smz
07.07.2010, 16:03
умные жуки отвечают в одну строчку чтобы отвязалась
Я здесь недавно и умным пока назвать себя не могу:) Но и я не понял, что тебе не понятно если ты искала на этом форуме. Ведь ответ действительно состоит почти из одной строчки.
Для меня main.swf- основная флешка, сцена, в который подгружаются другие, и зачем нам в нее возвращаться если мы никуда не уходим? Если я не прав. Давай код. Посмотрим.

zurkis
07.07.2010, 16:20
ну темы были похожие, достаточно поиском воспользоваться и посмотреть примеры работы с MovieClipLoader и loadClip и разобраться, тогда и уволить будет жалко

bettyshort
07.07.2010, 16:25
smz

я так хочу меню сделать а main как главная страница на которой открывать другие, в других - еще другие, но чтобы всегда можно было вернуться на шаг назад......вотъ

zurkis нет слов...

KipSyS
07.07.2010, 16:27
Ну, я думал, что девушек-программистов никогда не будет =)))
MovieClipLoader используй..

Добавлено через 1 минуту
Или зайди на другой flash сайт, залезь в кеш, стырь swf и декомпили их...Это оучение по исходникам, иногда более продуктивное, хотя не особо чесное.

bettyshort
07.07.2010, 16:35
ребят когда я лазила по поиску по этой теме я везде видела фразу "MovieClipLoader используй.."

проблема в том что она мне ни о чем не говорит =)

поэтому я и пытаюсь найти человека который бы мне объяснил как я могу его применить =)

zurkis
07.07.2010, 16:42
var myMCL:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
myMCL.addListener(myListener);

my_button.onRelease = function {
_root.myMCL.loadClip("my_swf.swf", 1);
}

my_btn - твоя кнопка

и еще: http://flash-reference.icod.de/MovieClipLoader.html - почитай, чтоб небыло вопросов

bettyshort
07.07.2010, 17:03
не функционрует =(

"ожидается имя функции"

Добавлено через 3 минуты
var myMCL:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
myMCL.addListener(myListener);

map.onRelease = function {
_root.myMCL.loadClip("map.swf", 1);
}

при кнопки map и подгрузного swf map

zurkis
07.07.2010, 17:21
да ну не работает, значит не правильно используем, исходник показываем что не работает

а по ссылке что я привел ниже читали? разбирались? примеры применяли на практике?

smz
07.07.2010, 17:26
bettyshort, если тебя к вечеру не уволят или ты не разберешься сама, постараюсь помочь. Сейчас просто нет времени.
Я так понимаю из книг по AS ты не читала ничего.

bettyshort
07.07.2010, 17:32
вотъ (

bettyshort
07.07.2010, 17:34
smz нет, я прочитала что то типа "для чайников" по макромедии
сделала сайт но там всё в одной флэшке и она очень тяжелая получилась, поэту вот пытаюсь занова, так сказать, с умом сделать...

zurkis
07.07.2010, 17:37
пересохрани под Flash CS3

bettyshort
07.07.2010, 17:41
вотъ...

zurkis
07.07.2010, 17:57
код не в том месте написали, исправил, в аттаче:

bettyshort
07.07.2010, 18:07
спасибо.. а обратно через баттон так:

btn.onRelease = function ()
{
cont_mc.unloadMovie();
};

???

Добавлено через 5 минут
просто у меня swf'ки будут по каталогам расфасованы, ибо их оч много будет, поетому мне нужно обратное действие тоже

foXes
07.07.2010, 18:33
var myListener:Object = new Object();
myMCL.addListener(myListener);



а зачем этот лисенер?:)

zurkis
08.07.2010, 02:36
а зачем этот лисенер?:)

а затем чтоб ты заглянул в помощь и не задавал дурацких вопросов, тяжело с языком, тебе сюда: http://flash-mx.ru/help/Help/ActionScriptLangRef/00001574.html

foXes
08.07.2010, 11:33
а затем чтоб ты заглянул в помощь и не задавал дурацких вопросов, тяжело с языком, тебе сюда: http://flash-mx.ru/help/Help/ActionScriptLangRef/00001574.html

MovieClipLoader.addListener()
Регистрирует объект, получающий сообщения о событиях MovieClipLoader.

и что? а зачем нужен пустой лисенер, который не обрабатывает ни одного события, в вашем случае? где вы его в дальнейшем используете? ведь и без него будет прекрасно работать.

ps тем более если вы любите использовать конструкции типа

map.onRelease = function {
...
}


или перед этим вы тоже пишете

var map_Listener:Object = new Object();
map.addListener(map_Listener:Object );

bettyshort
08.07.2010, 13:19
как обратно ?))))))))))))

Добавлено через 2 минуты
как деактивировать загружаемый swf, так наверное понятнее =)

KirAmp
08.07.2010, 14:09
Ну, я думал, что девушек-программистов никогда не будет =)))
Их дофига, 3 мои знакомые девушки - программисты :taunt:и получше меня в чем-то будут.
______________________________________________________________________
По теме: я bettyshort ответил в асе, должны помочь исходники

in4core
08.07.2010, 14:36
to Foxes / Как о объясняю своим ученикам, есть работа с внешней памятью не затрагивающей flash а есть с внутренней. Так лучше понимается. Так вот внешняя это события начала загрузки конца и т.д. не имеют отношения к флеш а имеют отношение к системе как таковой, тоесть идет интеграция загружаемого контента с флешкой. В этом случае для подключения методов внешней памяти мы используем листенер. Тоже самое и с маус эвентами, мышь это ведь среда железа, а не среда флеш - значит память внешняя... Так надеюсь понятнее, хотя может и не правильно))))))

zurkis
08.07.2010, 15:34
foXes внимательно читаем документацию по классу MovieClipLoader и не задаем дурных вопросов, а вопросы что и зачем, направляй обратно в Adobe

foXes
08.07.2010, 18:48
to in4core, спасибо за ответ.
1. в любом случае система сообщает о событиях флешу.
2. далее уже диспетчер флеша уведомляет обработчиков событий.
3. Выполняется код обработчика того-или инного события (listener.any_event_handler)
Это справедливо для диспетчеризации любого рода событий.
Для подключения методов внешней памяти мы используем листенер
Все компоненты уже и без нас с вами в самостоятельном порядке выполняют необходимые методы при наступлении того или инного события. А листнеры используются для добавления дополнительного функционала при обработке.
Это как утверждать, что если не написать свой cell renderer, то ячейка не отрисутся вообще. Она и без нас с вами отрисуется, только, возможно, не так как мы хотим.
Поэтому у меня возник вопрос:
Зачем в этом коде объявляется myListener, который не обрабатывает ни одного события??? зачем он нужен именно в данном контексте? его функционал нулевой! это как объявить переменную и не использовать ее вовсе.
to zurkis: что, не можете нормально ответить? я Вас не спрашиваю что такое лисенер. Я спрашиваю, зачем у Вас написана строчка с его объявлением, если вы его потом никак не определяете? Что, без него нельзя? Не будет работать? Если нет, то может можете объяснить почему?

var myMCL:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
myMCL.addListener(myListener);

my_button.onRelease = function {
_root.myMCL.loadClip("my_swf.swf", 1);
}

my_btn - твоя кнопка

и еще: http://flash-reference.icod.de/MovieClipLoader.html - почитай, чтоб небыло вопросов

Кто назовет хотя бы одно событие, которое обрабатывает myListener???

если я в чем то не прав, прошу меня обязательно поправить.
И не надо меня посылать читать документацию по синтаксису языка.. хотя бы на документацию по теме ссылки давали, а не на все подряд...

in4core
09.07.2010, 03:23
В данном контксте он не нужен. это для красоты и будешго продолжения кода

foXes
09.07.2010, 15:40
...это для красоты...

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

any_object.onAny_event..

то

var myListener:Object = new Object();
myListener.any_event...
any_object.addListener(myListener);

то вообще на таймлайн вешают...
...ужасно

и будующего продолжения кода
интересный подход:)

NoCD
09.07.2010, 17:38
Поэтому у меня возник вопрос:
Зачем в этом коде объявляется myListener, который не обрабатывает ни одного события???
Кто назовет хотя бы одно событие, которое обрабатывает myListener???


может для выполнения вот этого?

myListener.onLoadStart = function(mcTarget:MovieClip):Void{ };

myListener.onLoadProgress = function(mcTarget:MovieClip, nBytesLoaded:Number, nBytesTotal:Number):Void
{
trace(Math.round(nBytesLoaded / nBytesTotal * 100) + " % " + mcTarget + " загружено");
};


myListener.onLoadInit = function(mcTarget:MovieClip):Void{ };


или я ошибаюсь?

Приведите плииз код без Listener, Хотелось бы взглянуть!

in4core
10.07.2010, 00:59
Да NOCD он фигню несет, я объяснил это словом ПРОДОЛЖЕНИЕ кода. Он видимо не понял

foXes
10.07.2010, 14:22
Приведите плииз код без Listener, Хотелось бы взглянуть!

Можно же писать:

var myMCL:MovieClipLoader = new MovieClipLoader();
myMCL.onLoadInit=function(){
...
}

Это будет работать. При этом не надо явно создавать дополнительный объект listener'a.

to in4core
Да понял я все:) Просто, в той программе никакого кода больше не было, я смотрел исходник. А ПРОДОЛЖЕНИЯ кода может никогда и не быть, при этом доп ресурсы уже расходуются... Это разве я фигню несу?

mooncar
10.07.2010, 21:28
var myMCL:MovieClipLoader = new MovieClipLoader();
myMCL.onLoadInit=function(){
...
}

Это будет работать.

Это не будет работать.

Вообще, подразумевается, что MCL вводим, когда требуется дождаться определенных событий - таких как onLoadInit, onLoadComplete.
Можно подписать тот же объект this на эти события, но для объяснения новичку все-таки лучше ввести нового слушателя, создать специализированный Object.
Тем более, что MCL и слушателей и может быть несколько.

iNils
10.07.2010, 22:07
foXes внимательно читаем документацию по классу MovieClipLoader и не задаем дурных вопросов, а вопросы что и зачем, направляй обратно в Adobe
В данном случае, в хелпе плохой пример.
Можно подписать тот же объект this на эти события, но для объяснения новичку все-таки лучше ввести нового слушателя, создать специализированный Object.Хуже. Более того, создание отдельного объекта может привести к определенным последствиям. Буквально месяц назад была тема, где автор создавал отдельный объект в качестве слушателя. Код был в первом кадре, но клип был многокадровый, в результате, при каждом прохождении первого кадра, создавался новый объект, который регистрировался и оставался в памяти вместе с кучей подписанных функция. С this такого не будет, так как объект один и тот же.

mooncar
10.07.2010, 22:15
в результате, при каждом прохождении первого кадра, создавался новый объект, который регистрировался и оставался в памяти вместе с кучей подписанных функция. С this такого не будет, так как объект один и тот же.
Согласен. Но не следить за прохождением кадра, не записывать условие выполнения участка кода - это ошибка того автора более масштабная, наверняка последствий там могло быть и больше.

Сам почти всегда использую this, но при объяснении или в примере стараюсь писать более строго.

iNils
10.07.2010, 22:31
Сам почти всегда использую this, но при объяснении или в примере стараюсь писать более строго.Не вижу связи между строго и созданием нового объекта. Пример в хелп (а пустой объект взялся именно от туда) лишь помогает понять суть описания метода, свойства и тп., а не является примером для подражания. Поэтому объяснять надо так как будет использоваться на практике, а лишние вещи будут только путать начинающего и привьет привычку создавать такие объекты постоянно.

foXes
12.07.2010, 14:40
Это не будет работать.

ну конечно, не будет..
Не понимаю, зачем писать, если не уверены? Можете проверить здесь:

mooncar
12.07.2010, 15:15
Пардон, foXes, но я не пишу, если не уверен.
Если я не уверен, я тогда проверяю. Я проверил -
this.createEmptyMovieClip('mc', 0);
var myMCL:MovieClipLoader = new MovieClipLoader();
myMCL.onLoadInit=function(target_mc:MovieClip)
{
trace('loaded');
}
myMCL.loadClip('1.jpg', mc);
компилятор выдал мне ошибку
There is no property with the name 'onLoadInit'.
Логично, я подумал, с чего бы это MCL стал слушать сам себя.

Теперь вы выложили пример, где строки
var myMCL:MovieClipLoader = new MovieClipLoader();
myMCL.loadClip("pic.gif",tmp_mc);
записаны в кадре одного слоя, а
myMCL.onLoadInit=function(_mc:MovieClip)
{
trace("myMCL.onLoadInit function");
} - в кадре нижнего слоя.
Почему тогда так это работает?
Я не понимаю. Типа как бы так можно, но пока компилятор не прочухал? :)
Порядок действия? Но когда код в одном кадре, ни при каком порядке такая конструкция не работает, точнее, не компилируется как минимум.

foXes
12.07.2010, 15:58
Пардон, foXes, но я не пишу, если не уверен.


это хорошо:)


Почему тогда так это работает?
Я не понимаю. Типа как бы так можно, но пока компилятор не прочухал? :)
Порядок действия? Но когда код в одном кадре, ни при каком порядке такая конструкция не работает, точнее, не компилируется как минимум.

Это ж флеш:) Дело в том, что в данном случае компилятор не знает какого типа myMCL. Для него это просто объект. Ну а дальше, я думаю, все понятно..