PDA

Просмотр полной версии : Проблема смены клипов


CaXaP
04.06.2008, 00:41
Здравствуйте!

Возникла небольшая (надеюсь) проблема - я начал изучать флеш по книге Д. Гурского, и там в конце проект игры "реверси". Я слегка отошёл от последовательности, описанной в книге и застопорился на следующем моменте:

У меня есть клип _root - туда помещён main.swf - что то вроде стартового клипа.
В нём я создаю пустой клип container, куда помещаю клип логина в игру login.swf. В дальнейшем я хочу использовать container для всех последующих клипов (клип для комнаты ожидания противника, клип для самого процесса игры и т.п.).

Так вот, клип container хорошо создаётся и туда помещается login.swf.
Но когда я залогинился, мне нужно поменять в клипе container мувик login.swf на мувик room.swf.
И когда я пишу loader.loadClip("room.swf",this), то результатом получаю белый фон =(

Получаетя что клипу нельзя поменять "себя" на другой клип?
Как можно обойти данную проблему?
И буду очень признателен, если вы поделитесь каким-нибудь более удобным способом организации подобных смен мувиков.

Заранее спасибо.

silin
04.06.2008, 09:59
loader.loadClip("room.swf",this) загружает новый, но то что было в this удаляется, в том числе и сам loader..
если loader создать не в самом контейнере, а вне его - в том же _root, например, то все будет работать:
_root.loader.loadClip("room.swf",this)

CaXaP
04.06.2008, 13:07
silin
Спасибо, заработало.

И ещё один вопрос по этой же теме.
Я создал loader на клипе main.swf и теперь обращаюсь к нему из остальных мувиков как _parent.loader.
Но думаю это не очень удачное решение, поскольку код становится жостко привязанным к этому мувику main.swf (например не сделать вложенность клипов более 1 (иначе клипы следующих вложенностей по свойству _parent не попадут на main.swf)).
Была мысль записать loader на _root, но оч. не хочется засорять осн. временную диаграмму своим мусором (если вдруг игра будет расположена на каком-либо др. сайте то могут возникнуть конфликты идентификаторов да и просто нехорошо мусорить в чужих клипах).
Есть ли возможность этот loader записать куда-нибудь, откуда его будет видно всем мувикам моим, при этом не используя _root (это учитывая что все мувики грузятся в клип container, заменяя собой старое содержимое и клип container не выход для хранения).

silin
04.06.2008, 14:22
как вариант: поместить лоадер в _global:
_global.loader = new MovieClipLoader();

вызов из любого места (независимо от вложенности) :
_global.loader.loadClip("room.swf",this);
или просто loader.loadClip("room.swf",this);(если в самом мувике нет свойства loader, то все равно найдет)

CaXaP
04.06.2008, 15:11
хорошо, спасибо за помощь)