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

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

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

Регистрация: Jun 2011
Сообщений: 8
По умолчанию Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null"

Всем привет!
Помогите с решением вопроса, а то я уже целый день не могу понять, в чем моя ошибка.
Значит, главный класс создает экземпляр класса Aim:
Код AS3:
public class Main extends Sprite
	{
 
		var actors:Array = [];
 
		var aim:Aim;
 
 
		public function Main()
		{
			setupWorld();
 
			createBall();
 
			aim = new vkSnook_Aim (new Point(actors[1].body.GetPosition().x, actors[1].body.GetPosition().y),
			new Point (Input.mouseX, Input.mouseY));
		}
	}
Далее описание класса Aim:
Код AS3:
	public class Aim extends Sprite
	{
 
		private var aimSprite:Sprite;
 
		public function Aim(ballPosition:Point, mousePosition:Point) 
		{
			aimSprite = new Sprite();
 
			aimSprite.graphics.lineStyle(1, 0xFFFFFF, 1);
 
			aimSprite.graphics.lineTo(ballPosition.x, ballPosition.y);
			aimSprite.graphics.lineTo(mousePosition.x, mousePosition.y);
 
			parent.addChild(aimSprite); //вот здесь, судя по всему, происходит ошибка
		}
 
	}
Подскажите, в чем именно моя ошибка?
Заранее благодарен!

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

Регистрация: Feb 2012
Сообщений: 1,540
Код AS3:
public class Aim extends Sprite
	{
 
		private var aimSprite:Sprite;
 
		public function Aim(ballPosition:Point, mousePosition:Point) 
		{
                                 addEventListener(Event.ADDED_TO_STAGE,function(){
			aimSprite = new Sprite();
 
			aimSprite.graphics.lineStyle(1, 0xFFFFFF, 1);
 
			aimSprite.graphics.lineTo(ballPosition.x, ballPosition.y);
			aimSprite.graphics.lineTo(mousePosition.x, mousePosition.y);
 
			stage.addChild(aimSprite);
                            })
		}
 
	}
Добавлять нужно в stage.

---------------
Не советую использовать анонимные функции


Последний раз редактировалось MikroAcse; 12.02.2012 в 23:54.
Старый 12.02.2012, 23:55
razer89 вне форума Посмотреть профиль Отправить личное сообщение для razer89 Найти все сообщения от razer89
  № 3  
Ответить с цитированием
razer89

Регистрация: Jun 2011
Сообщений: 8
что-то не совсем понял... как-то вы даже структуру кода не сохранили...))

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

Регистрация: Feb 2012
Сообщений: 1,540
Нужно ждать, пока станет доступным stage и как раз в него добавлять объекты.

Старый 13.02.2012, 00:19
razer89 вне форума Посмотреть профиль Отправить личное сообщение для razer89 Найти все сообщения от razer89
  № 5  
Ответить с цитированием
razer89

Регистрация: Jun 2011
Сообщений: 8
Спасибо, конечно, код заработал, но я чего-то все равно не понял своей ошибки))
Кстати, линии, которые должен рисовать класс Aim так и не рисуются... вообще... Такое чувство, что спрайт не добавился в stage, или что-то в этом роде... Не подскажешь?)
...
Точно! вставил трейс в функцию, которую вызывает слушатель событий - ничего не выводится...


Последний раз редактировалось razer89; 13.02.2012 в 00:22.
Старый 13.02.2012, 00:22
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 6  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
razer89, извини, не подскажу, потому что пишу код на кадрах (я - кадроман).

Старый 13.02.2012, 00:24
razer89 вне форума Посмотреть профиль Отправить личное сообщение для razer89 Найти все сообщения от razer89
  № 7  
Ответить с цитированием
razer89

Регистрация: Jun 2011
Сообщений: 8
MikroAcse, мда, тяжелый случай))

Старый 13.02.2012, 00:49
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 8  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Код AS3:
public class Aim extends Sprite {
	private var aimSprite:Sprite;
 
	public function Aim(ballPosition:Point, mousePosition:Point) {
 		...
		parent.addChild(aimSprite); //вот здесь, судя по всему, происходит ошибка
	}
}
Никак не пойму зачем в контейнере создавать Объект и вместо того, чтобы его в этот же контейнер поместить, вы его выкидываете верхнему родителю...

А ошибка в том, что при выполнении конструктора у екземпляра класса Aim еше нет парента, а появится он лиш тогда, когда его ктото addChild-ом пригласит.

Старый 13.02.2012, 22:00
razer89 вне форума Посмотреть профиль Отправить личное сообщение для razer89 Найти все сообщения от razer89
  № 9  
Ответить с цитированием
razer89

Регистрация: Jun 2011
Сообщений: 8
elder_Nosferatu, все, понял свой косяк))))
Код AS3:
public class Main extends Sprite
	{
 
		var actors:Array = [];
 
		var aim:Aim;
 
 
		public function Main()
		{
			setupWorld();
 
			createBall();
 
			aim = new vkSnook_Aim (this, new Point(actors[1].body.GetPosition().x, actors[1].body.GetPosition().y),
			new Point (Input.mouseX, Input.mouseY));
		}
	}
Забыл указать парент в параметрах, принимаемых классом Aim!!!

Код AS3:
public class Aim extends Sprite
	{
 
		private var aimSprite:Sprite;
 
		public function Aim(parent:ObjectDisplayCantainer, ballPosition:Point, mousePosition:Point) 
		{
			aimSprite = new Sprite();
 
			aimSprite.graphics.lineStyle(1, 0xFFFFFF, 1);
 
			aimSprite.graphics.lineTo(ballPosition.x, ballPosition.y);
			aimSprite.graphics.lineTo(mousePosition.x, mousePosition.y);
 
			parent.addChild(aimSprite); //вот здесь, судя по всему, происходит ошибка
		}
 
	}

Старый 11.12.2013, 16:04
Nikem79 вне форума Посмотреть профиль Отправить личное сообщение для Nikem79 Найти все сообщения от Nikem79
  № 10  
Ответить с цитированием
Nikem79

Регистрация: Aug 2006
Сообщений: 35
В моём ролике постоянно вылазиют ошибки

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

подскажите где искать, что спровоцировало ошибку?.. 22-х кадров у меня много всяких в разных мувиках... Как вы ищите инициаторов таких ошибок?

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

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

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


 


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


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