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

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

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

Регистрация: Feb 2009
Сообщений: 63
Question ошибка обращения к объекту со ссылкой null, обращаюсь после срабатывания FRAME_CONSTR

вот код программы

Код AS3:
		public function ContactPage() {
			sc = new ServerComunication();
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
		private function onEnterFrame(e:Event) {
			if (currentLabel == "finished") {
				addEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed);
				function onFrameConstructed(e:Event){
					trace("onFrameConstructed");
					sendBTN.addEventListener(MouseEvent.CLICK, sendBTNClicked);
					//<вырезано> появляется энтер
					inputCommentTxt.text = "";
 
					// подгрузим контактные данные
					xmlLoader = new URLLoader();
					xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
					try {
						xmlLoader.load(new URLRequest("Contacts/info.xml"));
					} catch (error:Error) {
						trace("Unable to load requested document.");
					}
					removeEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed);
				}
 
				removeEventListener(Event.ENTER_FRAME, onEnterFrame);
			}
		}
trace("onFrameConstructed") срабатывает дважды,
после чего выдает ошибку на строчке sendBTN.addEventListener(MouseEvent.CLICK, sendBTNClicked)
sendBTN создается на кадре "finished"

не понимаю пчему возникает ошибка? и почему-то

вот текст ошибки:
Код:
onFrameConstructed
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at ContactPage/private:onEnterFrame/onFrameConstructed()[C:\WebServers\home\test.ru\www\ContactPage.as:50]
onFrameConstructed


Последний раз редактировалось wvxvw; 02.04.2010 в 21:18.
Старый 02.04.2010, 19:54
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Попробуйте onFrameConstructed вынести за пределы onEnterFrame

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

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

Старый 03.04.2010, 14:39
POzONe вне форума Посмотреть профиль Отправить личное сообщение для POzONe Найти все сообщения от POzONe
  № 4  
Ответить с цитированием
POzONe

Регистрация: Mar 2010
Сообщений: 10
у меня та же самая ошибка на такую же конструкцию. Сижу и парюсь.

Добавлено через 1 час 50 минут
Я нашёл, почему у меня не работало. Экземпляр класса в момент привязки к нему Listener'а должен быть уже на сцене.

Старый 05.04.2010, 16:07
mrMEM вне форума Посмотреть профиль Отправить личное сообщение для mrMEM Найти все сообщения от mrMEM
  № 5  
Ответить с цитированием
mrMEM

Регистрация: Feb 2009
Сообщений: 63
изменил код, избавился от onEnterFrame

Код AS3:
		public function ContactPage() {
			sc = new ServerComunication();
			addEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed);
		}
		private function onFrameConstructed(e:Event){
			trace("onFrameConstructed "+currentFrame);
			if (currentLabel == "finished") {
				// sendBTN:Button
				sendBTN.addEventListener(MouseEvent.CLICK, sendBTNClicked);
 
				// х.з. но без этой херни появляется энтер
				inputCommentTxt.text = "";
 
				// подгрузим контактные данные
				xmlLoader = new URLLoader();
				xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
				try {
					xmlLoader.load(new URLRequest("Contacts/info.xml"));
				} catch (error:Error) {
					trace("Unable to load requested document.");
				}
				removeEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed);
			}
		}
ошибка та же.

смотрите, вот выводы:
Код:
onFrameConstructed 1
onFrameConstructed 2
onFrameConstructed 3
onFrameConstructed 4
onFrameConstructed 5
onFrameConstructed 6
onFrameConstructed 7
onFrameConstructed 8
onFrameConstructed 9
onFrameConstructed 10
onFrameConstructed 11
onFrameConstructed 12
onFrameConstructed 12
onFrameConstructed 13
onFrameConstructed 14
onFrameConstructed 15
onFrameConstructed 16
onFrameConstructed 17
onFrameConstructed 18
onFrameConstructed 19
onFrameConstructed 20
onFrameConstructed 21
onFrameConstructed 22
onFrameConstructed 23
onFrameConstructed 24
onFrameConstructed 25
onFrameConstructed 26
onFrameConstructed 27
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at ContactPage/onFrameConstructed()[C:\WebServers\home\test.ru\www\ContactPage.as:49]
onFrameConstructed 27
XML Loaded
finished
"onFrameConstructed 27" выводится дважды, это тот самый кадр с лэйблом finished.
кроме того стоит заметить, что код после if (currentLabel == "finished") полностью выполняется, но до сих пор выводится та же ошибка..

еще вычитал в хэлпе: "..Это многоадресное событие, которое отправляется всеми экранными объектами, для которых зарегистрированы прослушиватели данного события."
не совсем догоняю смысл, у меня на этом кадре дорисовывается анимация + добовляется 8 объектов, кому интересно можете посмотреть сайт на http://dance.reditstudio.ru/ страница "контакты"(очень даже красиво получается). внимание вопрос, почему событие на 27-м кадре вызывается дважды?

Добавлено через 11 минут
еще когда я перемещаю удаление события наверх, т.е. сразу после if:
Код AS3:
			if (currentLabel == "finished") {
				removeEventListener(Event.FRAME_CONSTRUCTED, onFrameConstructed);
onFrameConstructed 27 возникает один раз, ошибка так же возникает и код после нее не выполняется
сам отвечу на свой вопрос. на 27-м кадре в скриптах написано stop(). FRAME_CONSTRUCTED на 27-м кадре вызывается дважды, согласно плану выполнения, и будет возникать до тех пор пока не будет удален прослушиватель.

меня принципиально заинтересовал вопрос, зачем тогда нужен FRAME_CONSTRUCTED, если объекты на сцене в момент его вызова еще не появились?!


Последний раз редактировалось mrMEM; 05.04.2010 в 16:53.
Старый 09.04.2010, 19:30
mrMEM вне форума Посмотреть профиль Отправить личное сообщение для mrMEM Найти все сообщения от mrMEM
  № 6  
Ответить с цитированием
mrMEM

Регистрация: Feb 2009
Сообщений: 63
вылечил,
но вопрос еще актуален

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

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

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


 


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


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