![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Здравствуйте
У меня возникла задача вставлять SWF на CS3 в флекс-приложение, вызывать функции SWF. Написал простейший макет. SWF часть: Файл Game.as package { import flash.display.MovieClip; public class Game extends MovieClip implements IGame { public function hello():String { return "Hello, world!"; } } } Флекс часть: Загрузка SWF: private function loadSWF():void{ loader = new Loader(); var req:URLRequest = new URLRequest("http://localhost/swf/GameFrame/bin-debug/Game.swf"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSWFComplete); loader.load(req); } Вот так работает: private function loadSWFComplete( event:Event ):void{ var info:LoaderInfo = event.target as LoaderInfo; var str:String = info.content['hello'](); Alert.show(str); } Перелопатил уже пол-интернета, но решения так и не нашел. Почему же оно через интерфейс все-таки не работает? Последний раз редактировалось topinambur; 29.11.2008 в 20:48. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Скомпилированные интерфейсы должны совпадать с точностью до описания в обоих swf.
|
|
|||||
|
Спасибо, решил сравнить чем же отличаются два интерфейса и ошибка оказалась довольно банальной:
Flash cs: IGame.as: Flex 3: IGame.as: т.е. один дексриптор пропустил ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Правильно, потому что по умолчанию уровень доступа у методов (если не указано) — internal.
|
|
|||||
|
Еще один небольшой вопрос, по смыслу наверное все-таки сюда
В загружаемом swf (Flash CS3) я генерирую в случайные моменты времени событие: И хочу обрабатывать их соответственно в главном фрейме (приложении на Flex 3): private function loadSWF():void{loader = new Loader(); var req:URLRequest = new URLRequest("game.swf"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadSWFComplete); loader.contentLoaderInfo.sharedEvents.addEventListener('someEvent', onRefresh); loader.load(req);} P.S. Нашел интересный пост . Попробую завтра реализовать Последний раз редактировалось topinambur; 03.12.2008 в 22:15. |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 20
|
Почтеннейшие,
у меня та же история, что и в первом примере. Только у меня интерфейсы IGame совпадают (это один и тот же файл). Картина та же -- работает, выдает нул. Помогите! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Значит не соблюдены условия из поста #2.
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 20
|
Оба проекта (fla и mxml) ссылаются на один (физически) файл.
Кстати, а это плохо? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Нет, ничего плохого в этом нет, но если интерфейсы одинаковы, то значит content не реализует этот интерфейс.
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 20
|
попробовал заказать ему описание, вот, что пишет:
<type name="Game" base="flash.display::MovieClip" isDynamic="false" isFinal="false" isStatic="false"> <extendsClass type="flash.display::MovieClip"/> <extendsClass type="flash.display::Sprite"/> <extendsClass type="flash.display::DisplayObjectContainer"/> <extendsClass type="flash.display::InteractiveObject"/> <extendsClass type="flash.display::DisplayObject"/> <extendsClass type="flash.events::EventDispatcher"/> <extendsClass type="Object"/> <implementsInterface type="flash.events::IEventDispatcher"/> <implementsInterface type="IGame"/> <implementsInterface type="flash.display::IBitmapDrawable"/> <method name="hello" declaredBy="Game" returnType="String"/> ... |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|