|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Возникает ошибка в методе внешнего swf-файла при его загрузке в другой swf-файл
Здравствуйте все кто хочет помочь.
Попробую описать проблему поподробнее. У меня есть два swf-файла:первый (полностью рабочий) и второй для загрузки первого. Второй swf-файл содержит кнопку, по нажатию на которую должен загружаться первый. Но в результате почему-то вместо загрузки происходит следующая ошибка: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at game.mainparts::WorldMap/addWorldMapGraphics() at game.mainparts::WorldMap() Из описания можно сделать вывод: что возникает ошибка при вызове метода (данный метод вызывается в конструкторе и выполняется при запуске swf-файла) загружаемого swf-файла. Но если запустить загружаемый файл, то он никаких ошибок не вызывает. Вот код swf-файла для загрузки: private function addWorldMap (e:MouseEvent) { var urlReq1:URLRequest = new URLRequest("WorldMap.swf"); worldMapLoader = new Loader(); worldMapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, worldMapLoaded); worldMapLoader.load(urlReq1); }; private function addWorldMapGraphics() { var worldMapSubstrate:WorldMapSubstrate = new WorldMapSubstrate; worldMapSubstrate.x = stage.width/2 - worldMapSubstrate.width/2; worldMapSubstrate.y = stage.height/2 - worldMapSubstrate.height/2; worldMapPartGraphics = new WorldMapGraphics(); worldMapPartGraphics.x = stage.width/2 - worldMapPartGraphics.width/2; worldMapPartGraphics.y = stage.height/2 - worldMapPartGraphics.height/2; startingCoordinates = new Array; startingCoordinates[0] = stage.width/2 - worldMapPartGraphics.width/2; startingCoordinates[1] = stage.height/2 - worldMapPartGraphics.height/2; addChild(worldMapPartGraphics); addChild(worldMapSubstrate); }; |
|
|||||
Регистрация: Jan 2008
Сообщений: 669
|
Скорее всего загужаемый свиф еще не добавлен на сцену, поэтому его stage = null.
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
А разве он не должен ссылаться на свою сцену(сцена обведена линиями по ширине и высоте)? Или же он ссылается на сцену swf-файла загрузчика? Но и её я обвел линиями. Есть еще какие идеи и советы как с этим бороться?
|
|
|||||
Регистрация: Oct 2009
Адрес: г. Казань
Сообщений: 82
|
Kuruki прав. worldMapLoader нужно добавить в область отображаемых объектов.
__________________
AS3Coding: ActionScript 3.0, FlashDevelop, ... |
|
|||||
Регистрация: Jan 2008
Сообщений: 669
|
Сцена у всех одна. И обводить ее линиями необязательно
|
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Если вы не заметили, то формула расчета координат объекта worldMap работает таким образом, что с учетом ширины и высоты сцены она выравнивает мувиклип по центру экрана в зависимости его собственных ширины и длины. Если же вначале на сцене ничего нету, то вне зависимости от параметров сцены заданных в properties fla-файла она будет считаться равной нулю. Если не верите, то пропишите trace(stage.width) или trace(stage.height) и в обоих случаях получите нули. ПОЭТОМУ я вначале и обвел сцену по нужным мне размерам в обоих swf-файлах.
А причем тут вообще addChild()? Я пишу, что swf-файл не выполняет все свои методы до конца при загрузке в другой swf-файл. И никакой тут addChild() ни при чем (тем более что я проверил до того как задать здесь вопрос). Так вот если сцена у всех одна, то тем более если на ней что то есть (в моем случае она обведенна) она не может быть равна нулю. И как я уже написал, в отдельности первый swf-файл полнотью работает как надо и выполняет все свои методы. А при загрузке в другой swf-файл нет. Если кто-нибудь еще сталкивался с такой проблемой, напишите пожалуйсто какое вы применили решение. |
|
|||||
Регистрация: Jan 2008
Сообщений: 669
|
Используйте stage.stageWidth, stageHeight.
swf-файл не выполняет все свои методы до конца потомучто происходит ошибка. До тех пор, пока клип не добавлен на сцену (в список отображения), его свойство stage равно null. При попытке обратиться к null происходит вышенаписанная вами ошибка. А в отдельности работает, потомучто он автоматом на сцену добавляются |
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Вот это, на мой взгляд, более дельный совет(странно что сам до него не додумался). Завтра когда буду на работе попытаюсь переписать класс, надеюсь тогда заработает. О результатах обязательно отпишусь.
|
|
|||||
Регистрация: Jan 2008
Сообщений: 669
|
Так я то же самое написал, только более подробно может.
Или вы про stage.stageWidth, stageHeight? Это не избавит вас от ошибки! Они лишь правильно скажут размеры сцены без всяких линий. Вам нужно добавить swf в список отображения, прежде, чем обращаться из него к stage. Обычно это делается методом addChild. |
|
|||||
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Да, stage.stageWidth и stage.stageHeight действительно не помогают, только что испробовал.
Но и addChild(worldMapLoader) не помогает ни в каком месте: ни до вызова метода load(), ни после, ни до событий Event.COMPLETE или Event.INIT в приемниках, ни после... Я уже выше писал, что уже десять раз addChild() испробовал прежде чем создать тему. Если бы было все так просто я бы тут спрашивать не стал. |
Часовой пояс GMT +4, время: 16:43. |
|
« Предыдущая тема | Следующая тема » |
|
|