![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2009
Сообщений: 10
|
Здравствуйте! Пробежал по разным форумам в поисках решения этой проблемы - ошибка 1009. К сожалению ничего вразумительного не нашёл, кроме этого поста.
Вот мой код MainGame.as package { //import caurina.transitions.Tweener; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.xml.XMLDocument; import flash.xml.XMLNode; import flash.net.URLLoader; import flash.net.URLRequest; import flash.display.Loader; public class MainGame extends MovieClip { private var sGame:DisplayObject; //бить private var bGame:DisplayObject; //ловить private var fGame:DisplayObject; //финал public var tabl :DisplayObject; //таблица //xml var xmlData : XML = new XML(); var loader : URLLoader = new URLLoader(); public static var valuta : String; public static var priz : String; public static var note : String; public static var congratulation_text : String; public static var error : String; public static var prize : String; public static var congratulation : String; public static var send : String; public static var title : String; public static var timer : String; public static var confirm_txt : String; public static var prizeimg : String; public static var score : String; public static var urlsave : String; public static var coeff_one_point : String; public static var help1 : String; public static var help2 : String; public static var operators_label : Array; public static var operators_code : Array; var loader_image : Loader; public var prize_img : MovieClip; public var prize2_text : MovieClip; public var prev_game : int = 0; public static var xml_loaded : Boolean = false; public function MainGame() { stop(); stage.scaleMode = "noScale"; start_btn.visible = false; loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress, false, 0, true); loaderInfo.addEventListener(Event.COMPLETE, onInit, false, 0, true); } private function hndlOnLoadXML(e:Event):void { e.target.removeEventListener(Event.COMPLETE, hndlOnLoadXML, false); xmlData = new XML(e.target.data); //trace(xmlData); valuta = "" + xmlData.itm.attribute("valuta"); priz = "" + xmlData.itm.attribute("priz"); note = "" + xmlData.itm.attribute("note"); congratulation_text = "" + xmlData.itm.attribute("congratulation_text"); error = "" + xmlData.itm.attribute("error"); prize = "" + xmlData.itm.attribute("prize"); congratulation = "" + xmlData.itm.attribute("congratulation"); send = "" + xmlData.itm.attribute("send"); title = "" + xmlData.itm.attribute("title"); timer = "" + xmlData.itm.attribute("timer"); confirm_txt = "" + xmlData.itm.attribute("confirm_txt"); prizeimg = "" + xmlData.itm.attribute("prizeimg"); score = "" + xmlData.itm.attribute("score"); urlsave = "" + xmlData.itm.attribute("urlsave"); coeff_one_point = "" + xmlData.itm.attribute("coeff_one_point"); help1 = "" + String(xmlData.help1); help2 = "" + String(xmlData.help2); operators_label = new Array(); operators_code = new Array(); for each(var operator in xmlData.operators.operator) { operators_label.push(operator); operators_code.push(operator.@code); } loader_image = new Loader(); // loader_image.contentLoaderInfo.addEventListener(Event.COMPLETE, hndlOnLoadImage, false, 0, true); try { loader_image.load( new URLRequest(prizeimg)); } catch (error : Error) { trace("Unable to load prize image" + error); } xml_loaded = true; } private function hndlOnLoadImage(e:Event):void { loader_image.removeEventListener(Event.COMPLETE, hndlOnLoadImage); prize_img.addChild(loader_image); prize2_text.x = -2; prize2_text.y = 15; prize2_text.txt.text = "" + prize; prize_img.addChild(prize2_text); start_btn.visible = true; //Tweener.addTween(bg, { alpha:0, time:0.5 } ); bg.visible = true; start_btn.addEventListener(MouseEvent.CLICK, onClick, false, 0, true); } private function onProgress(e:ProgressEvent) : void { var loaded:Number = e.bytesLoaded / e.bytesTotal * 100; preload.gotoAndStop(Math.round(loaded)); } private function onInit(e:Event):void { if (contains(preload)) removeChild(preload); // prize_img = new MovieClip(); prize2_text = new prize2_txt(); loader.addEventListener(Event.COMPLETE, hndlOnLoadXML, false, 0, true); try { loader.load(new URLRequest("parameters.xml")); } catch (error : Error) { trace("Unable to load xml: " + error); } } private function onClick(e:MouseEvent):void { start_btn.removeEventListener(MouseEvent.CLICK, onClick); gotoAndStop(3); var blockGame:Class = loaderInfo.applicationDomain.getDefinition("BlockGame") as Class; bGame = (new blockGame()) as DisplayObject; var shotGame:Class = loaderInfo.applicationDomain.getDefinition("ShotGame") as Class; sGame = (new shotGame()) as DisplayObject; var finalGame:Class = loaderInfo.applicationDomain.getDefinition("FilnalScreen") as Class; fGame = (new finalGame()) as DisplayObject; var Tabl:Class = loaderInfo.applicationDomain.getDefinition("Tablo") as Class; tabl = (new Tabl()) as DisplayObject; switchToGame(1); } public function switchToGame(g:int):void { if (bGame != null && contains(bGame)) removeChild(bGame); // if (sGame != null && contains(sGame)) removeChild(sGame); // if (fGame != null && contains(fGame)) { tablo.reset(); update(); removeChild(fGame); } // Model.shots = 0; tabl.visible = true; var game:DisplayObject; switch(g) { case 1: //удар // game = sGame; tabl.scaleX = tabl.scaleY = 1.0; tabl.x = 345; tabl.y = 43; tablo.keeperGame = false; break; // case 2: //ловля // game = bGame; tabl.scaleX = tabl.scaleY = 0.64; tabl.x = 408; tabl.y = 73; tablo.keeperGame = true; break; // case 3: //финал // Model.totalShots = 0; game = fGame; tabl.visible = false; tablo.reset(); break; // } if (g == prev_game + 1) Model.is_read_help = true; // addChildAt(game, 0); addChild(tabl); prize_img.x = 1024 - 225; prize_img.y = 15; addChild(prize_img); if (g == 3) { if(contains(prize_img)) removeChild(prize_img); // } prev_game = g; if (prev_game == 3) prev_game = 0; // //update(); } public function update():void { tablo.update(); } public function get tablo() : Tablo { return tabl as Tablo; } } } TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at MainGame/hndlOnLoadImage() А также не отображается кнопка start_btn. Как я понял ошибка либо в функции hndlOnLoadImage() либо в соседней на несколько строк выше. Подскажите, пожалуйста, решение проблемы!
__________________
yusrom.ucoz.ru |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 10
|
При замене строчки
loader_image.contentLoaderInfo.addEventListener(Ev ent.COMPLETE, hndlOnLoadImage, false, 0, true); на строчку loader_image.addEventListener(Event.COMPLETE, hndlOnLoadImage, false, 0, true); ошибка 1009 не появляется, но и кнопка start_btn тоже. Что делать, блин?
__________________
yusrom.ucoz.ru |
|
|||||
|
ветеран форума
|
Запускаем под отладчиком (Debug Movie если Flash, Debug во Flex Builder) - он нам показывает в какой строке ошибка. Смотрим, что в этой строчке у нас нулевое. Судя по второму посту, искомая строчка обьявится в hndlOnLoadImage, т к во втором варианте он не вызовется
__________________
4am is time to rock |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 10
|
Как я выяснил из других источников: такая ошибка возникала при попытках объекты типа Sprite() засунуть в объект типа MovieClip().
Проблемная строчка видимо prize_img.addChild(); здесь prize_img типа MovieClip(), а loader_image типа Sprite(). Вот... но как всё же это сделать?
__________________
yusrom.ucoz.ru Последний раз редактировалось yusrom; 31.08.2009 в 09:29. Причина: слово пропустил |
|
|||||
|
Modus ponens
|
Пальцем в небо, весь код читать не хочется...
FilnalScreen -> FinalScreen getDefinition() может выкидывать ошибку, если класс не найден, сначала нужно проверять hasDefinition(). А вообще - вам же только вот посоветовали, что нужно сделать, чтобы узнать, где ошибка.
__________________
Hell is the possibility of sanity |
|
|||||
|
стервочка (я мужик)
|
wvxvw, на сколько я помню getDefinition не выкидывает ошибку. ошибку выкидывает getDefinitionByName.
|
|
|||||
|
Регистрация: Aug 2009
Сообщений: 10
|
В функции hndlOnLoadImage, если строку
prize_img.addChild(loader_image); заменить на строку addChild(loader_image); то картинка, которая содержится в loader_image выводится в первом кадре с координатами (0,0). Кнопка start_btn опять не показывается... Выходит что проблема в том, что Sprite() не вставляется в MovieClip() Кто знает как решить эту задачу?..
__________________
yusrom.ucoz.ru |
|
|||||
|
Трейсы вам помогут.
Проставьте из поболе и определите нулёвый объект свойства или методы которого пытаетесь использовать. И будет щастье. |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 10
|
Да нулевой объект я определил! Я уже 3-й раз говорю, что надо как-то спрайт в мувиклип вставить.
__________________
yusrom.ucoz.ru |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:51. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| #1009 , 1009 , Error #1009 , Ошибка #1009 |
|
|