![]() |
Возникает ошибка в методе внешнего swf-файла при его загрузке в другой swf-файл
Здравствуйте все кто хочет помочь.
Попробую описать проблему поподробнее. У меня есть два swf-файла:первый (полностью рабочий) и второй для загрузки первого. Второй swf-файл содержит кнопку, по нажатию на которую должен загружаться первый. Но в результате почему-то вместо загрузки происходит следующая ошибка: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at game.mainparts::WorldMap/addWorldMapGraphics() at game.mainparts::WorldMap() Из описания можно сделать вывод: что возникает ошибка при вызове метода (данный метод вызывается в конструкторе и выполняется при запуске swf-файла) загружаемого swf-файла. Но если запустить загружаемый файл, то он никаких ошибок не вызывает. Вот код swf-файла для загрузки: Код AS3:
Код AS3:
|
Скорее всего загужаемый свиф еще не добавлен на сцену, поэтому его stage = null.
|
А разве он не должен ссылаться на свою сцену(сцена обведена линиями по ширине и высоте)? Или же он ссылается на сцену swf-файла загрузчика? Но и её я обвел линиями. Есть еще какие идеи и советы как с этим бороться?
|
Kuruki прав. worldMapLoader нужно добавить в область отображаемых объектов.
Код AS3:
|
Сцена у всех одна. И обводить ее линиями необязательно :)
|
Если вы не заметили, то формула расчета координат объекта worldMap работает таким образом, что с учетом ширины и высоты сцены она выравнивает мувиклип по центру экрана в зависимости его собственных ширины и длины. Если же вначале на сцене ничего нету, то вне зависимости от параметров сцены заданных в properties fla-файла она будет считаться равной нулю. Если не верите, то пропишите trace(stage.width) или trace(stage.height) и в обоих случаях получите нули. ПОЭТОМУ я вначале и обвел сцену по нужным мне размерам в обоих swf-файлах.
А причем тут вообще addChild()? Я пишу, что swf-файл не выполняет все свои методы до конца при загрузке в другой swf-файл. И никакой тут addChild() ни при чем (тем более что я проверил до того как задать здесь вопрос). Так вот если сцена у всех одна, то тем более если на ней что то есть (в моем случае она обведенна) она не может быть равна нулю. И как я уже написал, в отдельности первый swf-файл полнотью работает как надо и выполняет все свои методы. А при загрузке в другой swf-файл нет. Если кто-нибудь еще сталкивался с такой проблемой, напишите пожалуйсто какое вы применили решение. |
Используйте stage.stageWidth, stageHeight.
swf-файл не выполняет все свои методы до конца потомучто происходит ошибка. До тех пор, пока клип не добавлен на сцену (в список отображения), его свойство stage равно null. При попытке обратиться к null происходит вышенаписанная вами ошибка. А в отдельности работает, потомучто он автоматом на сцену добавляются |
Вот это, на мой взгляд, более дельный совет(странно что сам до него не додумался). Завтра когда буду на работе попытаюсь переписать класс, надеюсь тогда заработает. О результатах обязательно отпишусь.
|
Так я то же самое написал, только более подробно может.
Или вы про stage.stageWidth, stageHeight? Это не избавит вас от ошибки! Они лишь правильно скажут размеры сцены без всяких линий. Вам нужно добавить swf в список отображения, прежде, чем обращаться из него к stage. Обычно это делается методом addChild. |
Да, stage.stageWidth и stage.stageHeight действительно не помогают, только что испробовал.
Но и addChild(worldMapLoader) не помогает ни в каком месте: ни до вызова метода load(), ни после, ни до событий Event.COMPLETE или Event.INIT в приемниках, ни после... Я уже выше писал, что уже десять раз addChild() испробовал прежде чем создать тему. Если бы было все так просто я бы тут спрашивать не стал. |
| Часовой пояс GMT +4, время: 06:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.