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

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

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

Регистрация: Apr 2013
Сообщений: 44
По умолчанию Ошибка 1009

Код:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at MC_M()
	at flash.display::Sprite/constructChildren()
	at flash.display::Sprite()
	at flash.display::MovieClip()
Как ее можно обойти? Вроде все исправил но это осталось...


Последний раз редактировалось iNils; 10.06.2013 в 02:06.
Старый 10.06.2013, 00:47
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Не дёргать методы и поля обьекта, который null. Научиться отлаживать, в дебаггере скорее всего конкретную строку бы увидели и вопрос бы не встал. Без кода короче ничего больше не скажешь, но тут эта ошибка обычно от того, что stage у DisplayObject null, пока этот обьект на сцену не добавили.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 10.06.2013, 01:13
mAK08 вне форума Посмотреть профиль Отправить личное сообщение для mAK08 Найти все сообщения от mAK08
  № 3  
Ответить с цитированием
mAK08

Регистрация: Apr 2013
Сообщений: 44
Код AS3:
package 
{
 
	import flash.events.MouseEvent;
	import com.greensock.*;
	import com.greensock.easing.*;
	import flash.events.Event;
	import flash.display.MovieClip;
	import flash.geom.Rectangle;
	import flash.media.Sound;
	import flash.display.Sprite;
	import flash.media.SoundTransform;
 
 
	public class MC_M extends MovieClip
	{
		private var vol:Number;
		private var drag_start:Boolean = false;
		private var percent:Number = seek1.seekk.width;
		private var currentPosition:Number = 0;
		private var playingStatus:Boolean = true;
		private var rev:Boolean = false;
		private var forw:Boolean = false;
		private var astep:Number = 3;
		private var player_volume:Number = 100;
 
 
		public function MC_M()
		{
			vol = 10;
			slider_mc.mc.x = 100;
			reviewB.addEventListener(MouseEvent.MOUSE_DOWN,reviewDOWN);
			reviewB.addEventListener(MouseEvent.MOUSE_UP,reviewUP);
			forward.addEventListener(MouseEvent.MOUSE_DOWN,forwardDOWN);
			forward.addEventListener(MouseEvent.MOUSE_UP,forwardUP);
			stopB.addEventListener(MouseEvent.CLICK,stopBB);
			pauseB.addEventListener(MouseEvent.CLICK, pauseBB);
			playB.addEventListener(MouseEvent.CLICK,playBB);
			seek1.scrub.addEventListener(MouseEvent.MOUSE_DOWN,onPressS);
			seek1.scrub.addEventListener(MouseEvent.MOUSE_UP,onReleaseS);
			seek1.scrub.addEventListener(MouseEvent.RELEASE_OUTSIDE,onReleaseS);
			slider_mc.mc.addEventListener(MouseEvent.MOUSE_DOWN, dragSlider);
			slider_mc.mc.stage.addEventListener(MouseEvent.MOUSE_UP, stopSlider);
 
			ifdrag();
			this.soundTransform = new SoundTransform(3.3);
			stop();
 
 
		}
 
		private function reviewDOWN(e:MouseEvent):void
		{
			rev = true;
			reviewB.addEventListener(Event.ENTER_FRAME,reviewEnterFrame);
		}
		private function reviewEnterFrame(e:MouseEvent):void
		{
			if (rev)
			{
				currentPosition = this.currentFrame;
				if (playingStatus)
				{
					this.gotoAndPlay(currentPosition - astep);
				}
				else
				{
					this.gotoAndStop(currentPosition - astep);
				}
			}
		}
 
 
		private function reviewUP(e:MouseEvent):void
		{
			rev = false;
		}
 
 
		private function forwardDOWN(e:MouseEvent):void
		{
			forw = true;
			forward.addEventListener(Event.ENTER_FRAME,forwardEnterFrame);
		}
 
		private function forwardEnterFrame(e:MouseEvent):void
		{
			if (forw)
			{
				currentPosition = this.currentFrame;
				if (playingStatus)
				{
					this.gotoAndPlay(currentPosition + astep);
				}
				else
				{
					this.gotoAndStop(currentPosition + astep);
				}
			}
		}
 
 
		private function forwardUP(e:MouseEvent):void
		{
			forw = false;
		}
 
 
 
 
		private function stopBB(e:MouseEvent):void
		{
			playingStatus = false;
			this.stop();
			currentPosition = 1;
			this.gotoAndStop(currentPosition);
 
		}
 
 
 
		private function pauseBB(e:MouseEvent):void
		{
			playingStatus = false;
			currentPosition = this.currentFrame;
			this.stop();
 
		}
 
 
 
		private function playBB(e:MouseEvent):void
		{
			playingStatus = true;
			this.gotoAndPlay(currentPosition);
 
		}
 
		private function ifdrag():void
		{
			if (! drag_start)
			{
				seek1.scrub.addEventListener(Event.ENTER_FRAME,SC);
 
 
				function SC(e:Event):void
				{
					seek1.scrub.x = seek1.seekk.x + (this.currentFrame/this.totalFrames)*percent;
				}
 
			}
		}
 
 
 
 
		private function onPressS(e:MouseEvent):void
		{
			this.stop();
			drag_start = true;
			seek1.scrub.startDrag(false,new Rectangle(0,0,500,0));
			seek1.scrub.removeEventListener(Event.ENTER_FRAME,SC);
 
 
		}
		function SC(e:Event):void
				{
					seek1.scrub.x = seek1.seekk.x + (this.currentFrame/this.totalFrames)*percent;
				}
 
 
 
		private function onReleaseS(e:MouseEvent):void
		{
			drag_start = true;
			this.stop();
			currentPosition = Math.floor((seek1.scrub.x/percent)*this.totalFrames);
			if (playingStatus)
			{
				this.gotoAndPlay(currentPosition);
				playingStatus = true;
			}
			else
			{
				this.gotoAndStop(currentPosition);
				playingStatus = false;
			}
			seek1.scrub.stopDrag();
 
 
			seek1.scrub.addEventListener(Event.ENTER_FRAME,SC);
 
		}
 
 
 
		private function dragSlider(event:MouseEvent):void
		{
			slider_mc.mc.startDrag(false,new Rectangle(0,0,100,0));
			slider_mc.mc.removeEventListener(MouseEvent.CLICK, dragSlider);
			slider_mc.mc.addEventListener(Event.ENTER_FRAME, changeVolume);
		}
 
		private function stopSlider(event:MouseEvent):void
		{
			slider_mc.mc.stopDrag();
			slider_mc.mc.removeEventListener(MouseEvent.MOUSE_UP, stopSlider);
		}
 
		private function changeVolume(event:Event):void
		{
			vol = Math.round(slider_mc.mc.x) / 30;
			this.soundTransform = new SoundTransform(vol);
		}
 
	}
 
}
искал, не нашел... А строку не показывает, только ошибку в выводе... Все добавлено у всех имена проставлены... Не знаю даже

Добавлено через 2 минуты
Как можно найти какой именно обьект null?

Старый 10.06.2013, 01:40
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
В дебаге запустить. И пошагово пройти этот конструктор (если упадёт не заходя, то seek1.seekk.width узнать не смогло, т.е. seek1 null или seek1.seekk). Если MC_M - не Document class, то явно slider_mc.mc.stage - это null, про что написал.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 10.06.2013, 02:01
mAK08 вне форума Посмотреть профиль Отправить личное сообщение для mAK08 Найти все сообщения от mAK08
  № 5  
Ответить с цитированием
mAK08

Регистрация: Apr 2013
Сообщений: 44
Да правильно вы сказали это из за seekk который лежит в seek1. А как можно обратиться из класса к нему ?? я только начал в классах просто в кадре писал все получалось...

Старый 10.06.2013, 02:08
Ёлочка вне форума Посмотреть профиль Отправить личное сообщение для Ёлочка Найти все сообщения от Ёлочка
  № 6  
Ответить с цитированием
Ёлочка
 
Аватар для Ёлочка

Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
У вас ошибка в строке private var percent:Number = seek1.seekk.width; Обращаться к seek1.seekk нужно в конструкторе. seek1.seekk не существует до того момента, пока не создан главный класс.

Старый 10.06.2013, 02:12
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
mAK08, в AS не принято использовать символ _ в качестве разделителя в названии переменных и функциях, нужно использовать camelCase. Используют только в наименовании констант, так как они пишутся в верхнем регистре.

Также, _ используется перед определением приватных переменных.
Таким образом, запись
Код AS3:
private var player_volume:Number = 100;
Должна выглядеть так
Код AS3:
private var _playerVolume:Number = 100;
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Ёлочка хочет сказать что запись
Код AS3:
private var percent:Number = seek1.seekk.width;
нужно переписать на
Код AS3:
private var percent:Number = 0;
+ а здесь что является конструктором (возможно нужно дождаться ADDED_TO_STAGE )
Код AS3:
public function MC_M()
{  percent = seek1.seekk.width;
, а так в целом намного лучше чем раньше в кадрах))

Добавлено через 4 минуты
и еще одно
Код AS3:
		private function ifdrag():void
		{
			if (! drag_start)
			{
				seek1.scrub.addEventListener(Event.ENTER_FRAME,SC);
 
 
				function SC(e:Event):void
				{
					seek1.scrub.x = seek1.seekk.x + (this.currentFrame/this.totalFrames)*percent;
				}
 
			}
		}
не делайте так. Проблема в том что анонимная функция может быть удаленна сборщиком мусора, так как на неё не остается ссылки. Из-за этого Ваша программа может работать некорректно, а Вы тратить часы на её отладку. Всегда выносите функции в
Код AS3:
internal function SC(e:Event):void
{
	seek1.scrub.x = seek1.seekk.x + (this.currentFrame/this.totalFrames)*percent;
}
__________________
return this...

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Ёлочка Посмотреть сообщение
У вас ошибка в строке private var percent:Number = seek1.seekk.width; Обращаться к seek1.seekk нужно в конструкторе. seek1.seekk не существует до того момента, пока не создан главный класс.
Компилятор все равно перенесет этот код в конструктор. Так что проблема тут не в этом.

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

Регистрация: Jun 2013
Адрес: Воронеж
Сообщений: 101
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Компилятор все равно перенесет этот код в конструктор. Так что проблема тут не в этом.
А это тогда что?
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
Ёлочка хочет сказать что запись нужно переписать на
Именно так.
Миниатюры
Нажмите на изображение для увеличения
Название: Без имени-1.jpg
Просмотров: 61
Размер:	284.5 Кб
ID:	29656  

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

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

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


 


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


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