Просмотр полной версии : unloadMovie VS attachMovie - кто кого?
Amra Kimmerian
06.02.2007, 18:13
Здравствуйте.
mc_logo пуст. Нажимаю на кнопку 1, выполняется
on(release) {
_root.mc_logo.attachMovie("MainLogo", "MainLogo1", 1);
}
Появляется в mc_logo то что нужно.
Потом нажимаю на кнопку 2, выполняется:
on(release) {
_root.mc_logo.loadMovie("LogoMastery.swf");
}Снова появляется то что нужно. А вот если снова нажать кнопку 1, так все и остается на месте, как будто нажали на 2 кнопку.
Хорошо. Пишу для первой кнопки так:
on(release) {
_root.mc_logo.unloadMovie("LogoMastery.swf");
_root.mc_logo.attachMovie("MainLogo", "MainLogo1", 1);
}
И тут MainLogo не появляется, а вот LogoMastery работает отменно.
Как урегулировать конфликт unloadMovie и attachMovie ? Можно ли в пустой клип загружать из библиотеки и извне swf-файлы в одном проекте? Просветите пожалуйста.
это потому, что нельзя аттачить из чужой библиотеки, а именно это и выходит при mc_logo.attachMovie("MainLogo", "MainLogo1", 1), когда в mc_logo уже внешний мувик..
грузи не в сам mc_logo, а в котейнер в нем
on(release) {
_root.mc_logo.createEmptyMovieClip("contMC",1).loadMovie("LogoMastery.swf");
}
тогда все будет по понятиям..
Amra Kimmerian
07.02.2007, 09:06
Большое спасибо silin за науку о понятиях :). Все получилось. Но вот теоретический вопрос немного не прояснился. Как Вы говорите "...нельзя аттачить из чужой библиотеки, а именно это и выходит... когда в mc_logo уже внешний мувик..". Но в последнем моем примере кода LogoMastery.swf предварительно выгружается из MoveiClip-а mc_logo. И все равно код не работает. Складывается ощущение, что если в клипе побывал внешний swf-файл, то библиотека там остается даже после его выгрузки. Почему так происходит?
on(release) {
_root.mc_logo.loadMovie("LogoMastery.swf");
}
on(release) {
_root.mc_logo.unloadMovie("LogoMastery.swf");
_root.mc_logo.attachMovie("MainLogo", "MainLogo1", 1);
}
И тут MainLogo не появляется, а вот LogoMastery работает отменно.
Как урегулировать конфликт unloadMovie и attachMovie ? Можно ли в пустой клип загружать из библиотеки и извне swf-файлы в одном проекте? Просветите пожалуйста.
У вас синтаксис _root.mc_logo.unloadMovie("LogoMastery.swf"); неверен: когда чета загружается извне, то енто помещается в клип-назначения, замещая его содержимое, как если бы изначально оно там было. никаких *.swf внутри другого swf не бываетъ. Для того чтоб выгрузить, нужно убирать весь mc_logo. Попробуйте: unloadMovie('mc_logo');
Amra Kimmerian
07.02.2007, 09:54
Для того чтоб выгрузить, нужно убирать весь mc_logo.aksyos, т. е. невозможно в один и тот же клип загружать разные swf по очереди? Потому как клип mc_logo исчезнет? И нужно для каждой новой подгрузки swf создавать новый клип? Или код:
_root.mc_logo.loadMovie("LogoMastery.swf");
одновременно создает клип mc_logo и грузит в него swf?
Чувствую что все неверно говорю, но вытекает из Ваших слов.
насчет синтаксиса все верно, но дело не в этом
>>Складывается ощущение, что если в клипе побывал внешний swf-файл, то библиотека там остается даже после его выгрузки
ага, похоже на то..
только после выгрузки библиотека там не остается (легко проверить), но и доступ к здешней библиотеке не восстанавливается..
меня, например, это не особо печалит: не вижу когда такое может понадобится
Amra Kimmerian
07.02.2007, 10:21
Да просто клип этот я вручную поставил в нужное место и нужно что-бы в него то из основного проекта, то из подгружаемых грузились разные объекты (ну у меня это клипы с логотипами). Можно конечно кодом прописывать каждый раз на разных кнопках, но если координаты размещения логотипов поменяются в процессе разработки?... Понял! Нужно присвоить координаты этого клипа в начале всего фильма переменным, а с помощью переменных указывать всем кнопкам, куда при нажатии помещать вновь созданный клип, в который тут же грузить нужное. Можно ведь так сделать?
че-то не пойму в чем проблема:
mc_logo.attachMovie("MainLogo", "MainLogo1", 1) -создает MainLogo1 в mc_logo из библиотечного символа..
mc_logo.createEmptyMovieClip("MainLogo1",1).loadMovie(..) - делает тоже самое из внешнего..
что не устраивает ?
Amra Kimmerian
07.02.2007, 10:37
silin, теперь все устраивает, немного в иерархии запутался. Спасибо! Извините, не хотел Вас злить :)
В вашем случае было бы намного логичнее грузить все внешнее один раз и не убивать каждый раз при нажатии кнопки, а сделать пока не нужным клипам _visible=false; и клип_такой-то.stop(); Тогда вы сможите загружать внешние источники в удобное время и получите массу новых возможностей - эфект растворения-просвечивания при смене картинок к примеру.
Amra Kimmerian
07.02.2007, 16:43
aksyos, это верно. Но речь идет о сайте и его страницах, поэтому я так делать не могу. Но спасибо за идею. Она мне еще пригодится. И вот какой вопрос назрел в связи со всем выше(а кого - ниже) сказанным: в моем теперешнем коде клипы не удаляются вовсе. Просто заменяются один другим. На одних кнопках код выглядит так:
_root.mc_logo.attachMovie("MainLogo", "MainLogo1", 1);
на других так:
_root.mc_logo.createEmptyMovieClip("container",1).loadMovie("LogoGolosovanie.swf");
И никогда нигде не убираются. Точнее убираются автоматически. Это потому что гружу постоянно в 1 левел?
вообще-то level'ы это уровни плеера..
здесь же речь о depth MovieClip, т.е. глубине на которой, располагается визуальный объект в мувике
понятное дело, что два объекта не могут одновременно быть на одном уровне..
плеер работает с тем на кого у него ссылка, т.е. с последним..
что происходит при этом со старым не знаю, наверное сборщик мусора его удалит..
Amra Kimmerian
08.02.2007, 08:50
silin, спасибо Вам еще раз. Вопросов по этой теме больше нет. :bye:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.