PDA

Просмотр полной версии : Загрузка из swf


korkiss
19.05.2003, 20:03
Как загрузить флешку из флешки?

Делаю МС, в библиотеке делаю Linkage с именем "asdf", делаю 2load.swf (Ctrl+F12)

Потом хочу добраться до этой штуки из другой флешки. В ней:
- в 1 фреймеloadMovie("2load.swf",_root.mc)
- дальше mc2.attachMovie("asdf","new_mc2",1)

это то, до чего у меня ума хватило дойти... :(
не работает ессесно...

вопрос: как загружать флешки из других флешек?

ЗЫ: I have RTFM, have searched... :rolleyes:
ЗЗЫ: потратил на поиски целый день, только щас решил спросить :)


Офтоп... сквозняки опасны для здоровья! Шел по коридору в офисе мимо двери закрытой. Весь задумчивый такой... Тут дверь открылась сквозьняком и я со всей дури в нее и вошел. Итог: нос в кровь, синяк под глазом... и что-то соображается после этого не очень :(

DUDE
19.05.2003, 22:28
вот тебе исходник колупай.

korkiss
20.05.2003, 14:07
10x за исходник =)

у тебя там loadMovieNum() есть.
насколько мой инглиш силен, настолько я и понял из хелпа что эта функция отличается от собрата loadMovie() только тем, что она поддерживает корректный импорт из Flash 4 файлов. так ли это?

на самом деле я вчера сильно головой долбанулся и не смог нормально вопрос сформулировать. :(

итак, дубль два. я хочу подгружать файлики swf как библиотеки объектов. потом аттачить мувики и работать с ними програмно.

пример:
1. подгружаю library.swf в некий МС
loadMovie("library.swf","_root.mc")
2. в самом library.swf (на timeline) ничего нет. зато в библиотеке (Ctrl+L) у меня объекты, которые я прилинковал (Linkage) и вот они то мне и нужны. только как добраться до них ни малейшего понятия нет =(

еще вопрос в кучу: как можно юзать эти МС из library.swf не подгружая ее. типа того (user defined) loadMovieFromFile(URL, itemId, Target)?

да, я делаю движок для каталога диванов. хочу подгружать модели в разных проекциях (+ параметры и описания и тд) из внешних файлов. намереваюсь сделать одну библиотеку для всех этих моделей и грузить из нее по мере необходимости...
как это можно реализовать?
с вариантом 1 файл - 1 модель я сам, думаю, справлюсь...
однако плодить около 200 файлов не желательно. вот, кажется тему раскрыл...

Nox Noctis
20.05.2003, 16:04
сто раз было уже... :)
нельзя ничего аттачить между разными свфками...
приаттачить можно только внутри той свфки библиотека которой содержит клип.

то есть если ты подгружаешь в MC.loadMovie("library.swf");
то аттач будет работать только внутри этого MC

korkiss
20.05.2003, 17:08
извени за 101 раз, но флешер работает так быстро... что прочитать архив форума нет никакой возможности =(
хотя хотелось бы очень...

насколько я понял, Nox
_root.createEmptyMovieClip("mc",1);
loadMovie("2load.swf",_root.mc);
_root.mc.createEmptyMovieClip("mc",2);
_root.mc.mc.attachMovie("disk1","disk1mc",1);
в 2load.swf прилинкован "disk1"
так нельзя? у меня по крайней мере не работает....=)
то есть если ты подгружаешь в MC.loadMovie("library.swf");
то аттач будет работать только внутри этого MC должен работать... или...
нельзя ничего аттачить между разными свфками...

я опять запутался :confused:

Nox Noctis
20.05.2003, 17:40
_root.createEmptyMovieClip("mc",1);
loadMovie("2load.swf",_root.mc);
_root.mc.createEmptyMovieClip("mc",2);
_root.mc.mc.attachMovie("disk1","disk1mc",1);

в 2load.swf прилинкован "disk1"
так нельзя? у меня по крайней мере не работает....=) так можно. все там работает... :)
ошибка не в аттаче - а втом что ты начинаешь пользоваться мувиком _root.mc не дожидаясь пока 2load.swf полностью загрузится... :)
загрузка в любом случае не может идти меньше одного кадра, даже если грузишь с локалки, так что обращаться к клипу сразу после вызова loadMovie("2load.swf",_root.mc); не имеет смысла...

_root.createEmptyMovieClip("mc", 1);
loadMovie("2load.swf", mc);
this.onEnterFrame = function() {
var l = mc.getBytesLoaded();
if (l && l == mc.getBytesTotal()) {
mc.createEmptyMovieClip("mc", 2);
mc.mc.attachMovie("disk1","disk1mc",1);
delete this.onEnterFrame;
}
};

korkiss
21.05.2003, 14:54
Да здравствует Nox, его душистое мыло, его пушистая веревка!!!! :D

10x al0t :)))

+ если кто-то это все еще читает...
когда хочешь, чтобы твоя swf'ка не показывалась после загрузки (например мс._visible = false при загрузке), то это надо писать после того как загрузится swf'ка до конца. потому как mc становится уже mc, а тем, что ты в него загрузил. вот =)
типа мини-грабли...

Nox Noctis
21.05.2003, 15:23
Оригинал написал(а) korkiss
это надо писать после того как загрузится swf'ка до конца.кххх... да не только ЭТО !.. :)
да ВООБЩЕ ВСЕ что дальше происходит с этим клипом НУЖНО ПИСАТЬ ПОСЛЕ того как оно погрузится окончательно... :)
а уж визибл это или что другое - по барабану совсем :)

ilya_cat
21.05.2003, 17:32
Я эту проблему обошел так:
1) Создал массив _global.loaded
2) В каждый подгружаемый клип в первом кадре вставил строчку #include "initclip.as"
Вот его содержимое:
this._loaded=true;
var i
for (i in _global.loaded[this._target]) {
this[i]=_global.loaded[this._target][i]
}
loadedFunction()
3) Если мне нужно что-то передать в загружаемый клип, пишу следующее:
_root.global['путь/до/клипа/в/слеш/нотации']={
переменная:'значение переменной',
переменная2:'значение переменной2',
переменная3:'значение переменной3'


Вуаля - клип грузится, после загрузки сглатывает переменные и выполняет loadedFunction()

И никаких мучений с проверкой на загруженность/незагруженность.

Nox Noctis
21.05.2003, 17:40
а зачем везде this._target а не просто this ? :)
зачем нужна именно слэш-нотация ?

и к тому же плодить этот скрипт в каждом подгружаемом клипе - не дело... ИМХО. :)

хотя работает, не спорю.

ilya_cat
21.05.2003, 17:55
Слеш-нотация - это пережитки старины, к тому же она работает быстрей (да-да, представь себе), чем точечная.
А зачем плодить в каждом файле? Затем, что у меня в проекте могут грузиться сорок (на данном этапе), а в перспективе до пятисот разных клипов, и всеми надо управлять с самого начала.
При другом способе реализации надо вешать столько же таймеров на проверку загрузки, или один таймер, но с тяжеленным обработчиком - а Флеш оооочень не любит программный код, такое ощущение, что после обработки каждой команды вставляется задержка для отдыха процессора.

И вообще, чем больше я узнаю Флеш, тем больше начинаю любить Дельфи

Nox Noctis
21.05.2003, 18:06
Оригинал написал(а) ilya_cat
(да-да, представь себе)...да я даже знаю почему именно она работает быстрее :))
просто в данном случае выигрыш настолько незначительный - что можно не заморачиваться :)
хотя это скорее дело вкуса.
Оригинал написал(а) ilya_cat
у меня в проекте могут грузиться сорокодновременно ?! O__O

вобщем я тебя понял. но "я бы покрасил в зеленое" © :)