Показать сообщение отдельно
Старый 13.06.2010, 22:11
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 1  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
По умолчанию Выскакивает Error #1009 по непонятным причинам.

Добрый день дамы и господа. Помогите пожалуйста разрешить мне маленькую проблемку. Я в АС3 новичёк, поэтому возможна моя беда вам покажется смешной, однако я уже отсчялся совсем, и пришел к вам за помощью. Значит так:

Флешка, представляет собой следующее:

В рут из библиотеки добавляется клим Welcom, в котором создается CheckBox и Button. По нажатию на кнопку, положение CheckBox.selected записывается в SharedObject, клип удаляется и добавляется другой. При повторном запуске, если чек бокс был выставлен, то сразу вызывается метод, который происходил по нажатию кнопки, после записи в Shared object, и выполнение метода прерывается. Так вот если чек бокс небыл выставлен, то все работает отлично, но если был, то выскакивает ошибка:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".

В методе skipWelcome(), parent ровняется null, однако this как и нужно = welcome. В чем проблема расскажите пожалуйста.

Собственно код, главный её класс:

Код AS3:
package com.flashgangsta {
 
	import flash.display.MovieClip;
	import flash.display.Sprite;
 
	public class Main extends Sprite {
 
		private var welcome:MovieClip;
 
		public function Main() {
			var welcome:MovieClip = new Welcome();
			addChild(welcome);
		}
	}
}
Класс Welcome:

Код AS3:
package com.flashgangsta {
 
	import flash.display.MovieClip;
	import fl.controls.Button;
	import fl.controls.CheckBox;
	import flash.net.SharedObject;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Welcome extends MovieClip {
 
		private var skip:Button = new Button();
		private var dontShowAgain:CheckBox = new CheckBox();
		private var sharedObject:SharedObject = SharedObject.getLocal("skipWelcom");
 
		public function Welcome() {
			if(sharedObject.data.dontShowAgain) {
				skipWelcome(); // Вот тут возникает ошибка
				return;
			}
			dontShowAgain.label = "Не показывать в следующий раз";
			dontShowAgain.width = 202;
			dontShowAgain.selected = false;
			dontShowAgain.x = 300;
			dontShowAgain.y = 505;
			dontShowAgain.useHandCursor = true;
			addChild(dontShowAgain);
 
			skip.label = "Пропустить заставку"
			skip.width = 190;
			skip.x = 305;
			skip.y = 533;
			skip.useHandCursor = true;
			addChild(skip);
 
			skip.addEventListener(MouseEvent.CLICK, onSkipClicked);
 
			this.addEventListener(Event.ENTER_FRAME, checkMoviePlayingProgress);
		}
 
		private function onSkipClicked(event:Object):void {
			recordSharedObject();
			skip.removeEventListener(MouseEvent.CLICK, onSkipClicked);
			skipWelcome();
		}
 
		private function recordSharedObject():void {
			sharedObject.data.dontShowAgain = dontShowAgain.selected;
			sharedObject.flush();
		}
 
		private function skipWelcome():void {
			parent.addChild(new EastingStartMenu()); //parent = null
			parent.removeChild(this); //parent = null
		}
	}
}
Прилогаю исходник, там кода немного больше, для простоты я удалил ненужное тут.
Вложения
Тип файла: rar Easting.rar (391.7 Кб, 35 просмотров)
__________________
Убейте меня!


Последний раз редактировалось джонатан; 13.06.2010 в 22:14.