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

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

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

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
По умолчанию Динамическое создание экземпляра:error

Вроде все просто но я ничего не пойму.Flash не хочет компилировать,выдает:TypeError: Error #1009: Cannot access a property or method of a null object reference.
Надо динамически получить экземпляр символа из библиотеки и отобразить его на сцене.
Большая просьба помочь.
Файл в атаче.
Вложения
Тип файла: zip Proba.zip (7.6 Кб, 57 просмотров)

Старый 20.02.2009, 19:44
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 2  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
в linkage поменять controlPanel.ControlPanel на ControlPanel

Старый 20.02.2009, 19:48
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 3  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Поменял,fla сохранил.Все равно пишет TypeError: Error #1009:
Flash CS3

Старый 20.02.2009, 19:52
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 4  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
а сорри..не то посомтрел...короче...initPanel() вызывать после срабатывания события ADDED_TO_STAGE . И поставьте в cs3 permit debugging...тогда он пишет на какой строчке ошибка
Код AS3:
public function  ControlPanel() {
		addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true);
  }
 
  private function added(e:Event):void 
  {
	 removeEventListener(Event.ADDED_TO_STAGE, added, false);
	 initPanel();
	initEvents();
  }

Старый 20.02.2009, 20:23
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 5  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Не компилирует все равно.Выдает:TypeError: Error #1009: Cannot access a property or method of a null object reference

Старый 20.02.2009, 20:28
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 6  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
поставьте debug mode и смотрите где ошибка...всё работает если делать как я написал выше

Старый 20.02.2009, 20:33
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 7  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
У Вас компилирует без ошибок?

Старый 20.02.2009, 20:43
CEBEP вне форума Посмотреть профиль Отправить личное сообщение для CEBEP Посетить домашнюю страницу CEBEP Найти все сообщения от CEBEP
  № 8  
Ответить с цитированием
CEBEP
 
Аватар для CEBEP

Регистрация: Nov 2006
Сообщений: 688
Отправить сообщение для CEBEP с помощью ICQ Отправить сообщение для CEBEP с помощью Skype™
controlPanel не может обрашаться на прямую к stage и его свойствам.
Т.е. вы создаёте в Маин - controlPanel, который ссылается на stage, до тех пор как он добавлен на stage.
Цитата:
Отображаемые объекты в момент создания в конструкторе не имеют доступа к stage и root (если только они не были расположены на timeline до компиляции)
Почитайте тут больше
http://flasher.ru/forum/showpost.php...6&postcount=78
__________________
"I am the terror that flaps in the night…!"


Последний раз редактировалось CEBEP; 20.02.2009 в 20:54.
Старый 20.02.2009, 20:47
Kolan вне форума Посмотреть профиль Отправить личное сообщение для Kolan Найти все сообщения от Kolan
  № 9  
Ответить с цитированием
Kolan

Регистрация: Jan 2009
Сообщений: 38
Anddrey, во-первых, очевидно, что скомпилировать таки получается, потому что ошибка Cannot access a property or method of a null object reference — это ошибка времени выполнения.

Суть ошибки в том, что вы обращаетесь к не созданному объекту, странно, что вы не нашли эту ошибку отладкой, как вы пробовали отладить?

Старый 20.02.2009, 20:51
Anddrey вне форума Посмотреть профиль Отправить личное сообщение для Anddrey Найти все сообщения от Anddrey
  № 10  
Ответить с цитированием
Anddrey

Регистрация: Jan 2001
Адрес: Украина
Сообщений: 284
Я вижу что на сцене экземпляр не появляется.Отладка ругается на строчках
Код AS1/AS2:
  public function initPanel()
По синтаксису ошибок нет.Я все равно не понимаю как заставить код работать

Добавлено через 6 минут
При чем если клатешь символ из библиотеки руками на сцену.События для ControlPanel отрабатываются.Вот мой код:
Код AS1/AS2:
package controlPanel
{
import flash.display.*;
import flash.ui.Keyboard;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
 
public class  ControlPanel extends MovieClip {
  public var cur_state:String;
  private var xOpen,xClose:int;
  private var yOpen,yClose:int;
  public function  ControlPanel() {
		  addEventListener(Event.ADDED_TO_STAGE, added, false, 0, true);
 
  }
  public function initPanel(){
	  xClose=0;
	  yClose=0;
	  yClose=35;//stage.stageHeight-35;
	  xOpen=0;
	  yOpen=160;//stage.stageHeight-160;
	  this.x=xClose;
	  this.y=yClose;
	  cur_state="close";
	  //trace("initPanel work stage.height="+stage.stageHeight);
  }
  public function initEvents(){    
	  stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
	  addEventListener(MouseEvent.MOUSE_DOWN, MouseDownHandler);	
  }
  private function added(e:Event):void 
  {
	 removeEventListener(Event.ADDED_TO_STAGE, added, false);
	 initPanel();
	 initEvents();
  }
  private function openPanel(){
	  this.y=yOpen;
	  cur_state="open";
  }
  private function closePanel(){
	  this.y=yClose;
  	  cur_state="close";
  }
  //------------------Event handel---------------------------------
  private function MouseDownHandler(e:MouseEvent):void {
	 trace("MouseDown onControlPanel!!!");
	if (cur_state == "open"){
		 closePanel();
	} else {
		  openPanel();
	}
  }
  private function KeyDownHandler(e:KeyboardEvent):void {
	  trace("PRESS "+e.keyCode);
			switch(e.keyCode)
			{ 			    
				case Keyboard.SPACE:
				  if (cur_state == "open"){
					  closePanel();
				  } else {
					  openPanel();
				  }
				break;
			}
  }
 
}
}
Где тут ошибка???

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

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

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


 


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


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