PDA

Просмотр полной версии : Доступ к методам подгружаемых swf


mre
26.05.2008, 20:04
У меня есть swf, наследуется от MovieClip, (в linkage - класс MovieClipExt) в нем добавлен public метод _play. Из библиотеки я делаю "Export Flash Movie".
Затем загружаю ее в другую swf.
Там делаю следующее:
public function loadComplete(e:Event):void
{
var logo = loader.content;
trace(logo); // MovieClip
logo._play(); //TypeError: Error #1006: _play is not a function.
}
И так пробовал:
public function loadComplete(e:Event):void
{
var logo = (loader.content as MovieClipExt);
trace(logo); // null
}

Дак как же все-таки мне получить доступ к моему методу _play?

badun
26.05.2008, 21:09
попробуй не по COMPLETE, а по INIT

mre
26.05.2008, 21:41
А какой смысл если ничего еще не загружено?

silin
26.05.2008, 22:25
что ж за беда такая:

>>У меня есть swf, наследуется от MovieClip
что у вас наследуется от MovieClip?

>> (в linkage - класс MovieClipExt)
в linkage кого этот MovieClipExt? , что есть MovieClipExt ?

>>в нем добавлен public метод _play
в ком добавлен метод _play

>>Из библиотеки я делаю "Export Flash Movie".
совсем уже..

>>А какой смысл если ничего еще не загружено?
??

mre
26.05.2008, 23:27
Поясняю.
Есть проект .fla в нем в библиотеке лежит MovieClip (назовем его test), для которого написан класс MovieClipExt и прописан в linkage этого MovieClip (test). Класс MovieClipExt наследуется от MovieClip, и в нем нет ничего кроме super() и public метода _play().
В библиотеке правым щелчком мыши на этом MovieClip (который test), в контекстном меню есть пункт "Export Flash Movie", используя его я получаю файл test.swf
Далее действия из description со слов "Затем загружаю ее в другую swf..."

silin
27.05.2008, 00:08
mre, у вас удивительная способность объяснять ..: ни хрена не ясно..

пример проблемы в чистом виде (без лишних деталей) увеличит шансы разобраться

mre
27.05.2008, 00:20
:)
У меня есть MovieClip в котором присутствует видео, в связи с чем его размер довольно велик и я хочу его подгружать лоадером, вот, но мне надо в него добавить пару методов которых нет в MovieClip, как мне можно это сделать?
То есть мне нужно чтобы у меня лежала swf с моим MovieClip, я ее загрузил лоадером и мог использовать дополнительные методы, зашитые в ней.

etc
27.05.2008, 00:56
Используйте интерфейсы.

badun
27.05.2008, 01:03
Какого типа экспортированный мувик получается, проверил? Судя по всему вместо MovieClipExt выходит просто MovieClip.

silin
27.05.2008, 09:25
ага, если в загружаемом мувике есть мувик aMovieClipExt (в библиотеке привязанный к классу MovieClipExt ), то и искать его надо внутри загруженного:
private function loadComplete(e:Event):void
{
var logo:MovieClip = loader.content as MovieClip;
trace( "logo : " + logo );//[object MainTimeline]
var aMovieClipExt:MovieClipExt = logo.aMovieClipExt;
trace( "aMovieClipExt : " + aMovieClipExt );//[object MovieClipExt]
aMovieClipExt._play();
}
другой вариант: загружаемый мувик сам является MovieClipExt (это его document class), тогда все будет как ты ожидал:
private function loadComplete(e:Event):void
{
var logo:MovieClip = loader.content as MovieClip;
trace( "logo : " + logo );//[object MovieClipExt]
logo._play();
}

ps Export Flash Movie похоже компилирует только графику

terbooter
27.05.2008, 10:01
mre, насколько я понимаю ваш вопрос,
в аналогичной ситуации у меня все работает.
только нужно не забывать делать метод публичным

mre
27.05.2008, 11:33
Export Flash Movie похоже компилирует только графику
Похоже проблема была в этом, спасибо!