|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2009
Сообщений: 8
|
Общение с загружаемым SWF через интерфейс.
Общение с загружаемым SWF через интерфейс.
Вечный вопрос "Что я делаю не так?". Для примера создал я Главный мувик с двумя кнопками. - По нажатию кнопки №1 создается другой мувик, реализующий тестовый интерфейс. Проверяем как будто... работает. - По нажатию кнопки №2 Загружаем другую SWF в которой также определяется, класс реализующий тот же тестовый интерфейс. Загружаю с помощью Loader`а, и пытаюсь достать его экземпляр через интерфейс. Никаких ошибок при компиляции не дает, но вместо объекта получаю null. Вот интерфейс: Вот класс загружаемой SWF: package{ import flash.display.MovieClip; import flash.events.*; import Itest; //------------ public class Symbol2 extends MovieClip implements Itest{ public function testInterface():void { trace("Interface OK"); } } } package{ import flash.display.MovieClip; import flash.events.*; import flash.display.Loader; import flash.net.URLRequest; import Symbol11; import Itest; //------------ public class Symbol1 extends MovieClip{ var s11:Itest; var s2:Itest; var myLoader:Loader; //-- конструктор public function Symbol1():void { button1.addEventListener(MouseEvent.MOUSE_UP, go1); button2.addEventListener(MouseEvent.MOUSE_UP, go2); } // -- кнопка1 public function go1(e:Event):void { var s11o= new Symbol11(); addChild(s11o); // мувик появился s11=(s11o as Itest); // проверяем trace(s11 is Itest); // true s11.testInterface(); // Interface OK // } // -- кнопка2 public function go2(e:Event):void { myLoader = new Loader(); myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadComplete); myLoader.load(new URLRequest("tst2.swf")); addChild(myLoader); // загруженый мувик появился } private function LoadComplete(e:Event): void { s2=(myLoader.content as Itest); // проверяем trace(s2 is Itest); // false s2.testInterface(); // TypeError: Error #1009: Не удается вызвать свойство или метод со // ссылкой на объект "null". at Symbol1/LoadComplete() } } } Я совсем недавно столкнулся с AS3 и вероятно недопонимаю что-то очень важное, хотя рылся в описаниях и на форумах довольно долго. Пробовал лоадеру передавать context, брал примеры из разных источников, но так ничего и не вышло. На этом форуме были подобные темы, но из них я лишь понял что этот пример просто обязан работать. Нид хэлп пропадаю . |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Интерфейсы в обеих флешках должны совпадать по описанию.
|
|
|||||
УККЩКб ыусгкшенУккщкРфтвдук)ж
Ъ Добавлено через 1 минуту у меня был похожий случай. помогла перекомпиляция обеих флешек.
__________________
я могу стать всем, если только захочу |
|
|||||
Регистрация: Sep 2009
Сообщений: 8
|
В примере это один и тот же файл
да и в первом же случае все работает там я все точно так же оформил. тут вообще проще не придумаешь.. но почему.. СТОП Добавлено через 4 минуты Прошу прощения, вопрос снимается ^_^ Можно долго мучаться из-за какой-нибудь глупости, но стоит спросить у умных людей, как сразу сам понимаешь какой ты дурень и все проблемы решаются сами собой. Короче у меня myLoader.content то, указывает на верхний уровень подгружаемой флэшки, а класс был приделан к мувику лежащему на этом верхнем уровне, а не к самому документу. Привык понимаешь все в мувики пихать. |
Часовой пояс GMT +4, время: 20:20. |
|
« Предыдущая тема | Следующая тема » |
|
|