Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.08.2009, 12:14
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 1  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
Question Error #1009

Здравствуйте! Пробежал по разным форумам в поисках решения этой проблемы - ошибка 1009. К сожалению ничего вразумительного не нашёл, кроме этого поста.
Вот мой код MainGame.as
Код AS3:
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

Старый 30.08.2009, 20:45
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 2  
Ответить с цитированием
yusrom

Регистрация: 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

Старый 30.08.2009, 21:18
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 3  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Запускаем под отладчиком (Debug Movie если Flash, Debug во Flex Builder) - он нам показывает в какой строке ошибка. Смотрим, что в этой строчке у нас нулевое. Судя по второму посту, искомая строчка обьявится в hndlOnLoadImage, т к во втором варианте он не вызовется
__________________
4am is time to rock

Старый 30.08.2009, 22:41
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 4  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
Как я выяснил из других источников: такая ошибка возникала при попытках объекты типа Sprite() засунуть в объект типа MovieClip().
Проблемная строчка видимо
prize_img.addChild();
здесь prize_img типа MovieClip(),
а loader_image типа Sprite().
Вот... но как всё же это сделать?
__________________
yusrom.ucoz.ru


Последний раз редактировалось yusrom; 31.08.2009 в 09:29. Причина: слово пропустил
Старый 30.08.2009, 23:15
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Пальцем в небо, весь код читать не хочется...
Код AS3:
var finalGame:Class = loaderInfo.applicationDomain.getDefinition("FilnalScreen") as Class;
FilnalScreen -> FinalScreen
getDefinition() может выкидывать ошибку, если класс не найден, сначала нужно проверять hasDefinition().
А вообще - вам же только вот посоветовали, что нужно сделать, чтобы узнать, где ошибка.
__________________
Hell is the possibility of sanity

Старый 31.08.2009, 00:36
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
wvxvw, на сколько я помню getDefinition не выкидывает ошибку. ошибку выкидывает getDefinitionByName.

Старый 31.08.2009, 00:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Упс, да, так и есть.
__________________
Hell is the possibility of sanity

Старый 31.08.2009, 12:17
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 8  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
В функции hndlOnLoadImage, если строку
prize_img.addChild(loader_image);
заменить на строку
addChild(loader_image);
то картинка, которая содержится в loader_image выводится в первом кадре с координатами (0,0). Кнопка start_btn опять не показывается...
Выходит что проблема в том, что Sprite() не вставляется в MovieClip()
Кто знает как решить эту задачу?..
__________________
yusrom.ucoz.ru

Старый 31.08.2009, 12:34
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 9  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Трейсы вам помогут.
Проставьте из поболе и определите нулёвый объект свойства или методы которого пытаетесь использовать. И будет щастье.

Старый 31.08.2009, 14:44
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 10  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
Да нулевой объект я определил! Я уже 3-й раз говорю, что надо как-то спрайт в мувиклип вставить.
__________________
yusrom.ucoz.ru

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
#1009 , 1009 , Error #1009 , Ошибка #1009

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.