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

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

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

Регистрация: Dec 2005
Сообщений: 113
По умолчанию dispatchEvent

В классе Arrow передаю dispatchEvent вот код класса который его должен принять:
Код:
package main { 
     import main.Arrow;
	 import flash.text.*;
	 import flash.events.EventDispatcher;
	 import flash.display.Sprite; 
     import flash.events.Event; 
    
   
    dynamic public class Text extends Sprite { 
                           var arr:Arrow = new Arrow();
		  public var score:Number;
		  public var score1:String;
		  
		  public function Text() { 
              
			  score=0;
              var.addEventListener("ArrowHit",handleEvent);	 
			  
           } 
           private function handleEvent(evt:Event):void { 
           

		    score+=1;
		    score1=score.toString();
			this.quantity.text=score1;  
           } 
     } 
}
Выдает ошибку:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at main::Arrow/Random()
at main::Arrow$iinit()
at main::Text$iinit()
at flash.display::Sprite/flash.display:Sprite::constructChildren()
at flash.display::Sprite$iinit()
at flash.display::MovieClip$iinit()
at test_fla::MainTimeline$iinit()

Мне кажется виновата строчка var arr:Arrow = new Arrow();
Но что не так?
Подскажите пожалуйста!

Старый 19.08.2007, 22:38
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 2  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Она не виновата
Но судя по сообщению еррора, в функцие Random класс Arrow ты пытаешься обратится к свойству или методу, который не существует. Почитай предыдущий топик и ты поймешь о чем речь. А если в двух словах, то надо видеть класс Arrow.

Старый 19.08.2007, 22:39
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 3  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
var.addEventListener("ArrowHit",handleEvent);

это ляп или у тебя так?

Старый 19.08.2007, 22:48
tov_diatel вне форума Посмотреть профиль Отправить личное сообщение для tov_diatel Найти все сообщения от tov_diatel
  № 4  
Ответить с цитированием
tov_diatel

Регистрация: Dec 2005
Сообщений: 113
1когда ее убираю ошибок нет (просто не получаю ивент)
2 ляп там arr.addEventListener("ArrowHit",handleEvent);

Старый 19.08.2007, 22:52
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 5  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Цитата:
Сообщение от tov_diatel
1когда ее убираю ошибок нет (просто не получаю ивент)
Это логично Не вызывается конструктор класса и функция Random - в ней то и ерор (теоритически).

Покажи ф-цию Random.

Старый 19.08.2007, 22:57
tov_diatel вне форума Посмотреть профиль Отправить личное сообщение для tov_diatel Найти все сообщения от tov_diatel
  № 6  
Ответить с цитированием
tov_diatel

Регистрация: Dec 2005
Сообщений: 113
вот весь код Arrow .Прост мне кажеться что ошибка в наследовании.
Код:
package main { 
     import flash.display.Sprite; 
     import flash.events.Event; 
     import flash.events.EventDispatcher;

  
    dynamic public class Arrow extends Sprite { 
               
		        public var flag:Number;
			    public var xs:Number;
		        public var ys:Number;
				public var lemx:Number;
		        public var lemy:Number;
		  public function Arrow() { 
               	Random();
				addEventListener(Event.ENTER_FRAME, Update); 
           } 
           public function Random() {
			  	 flag=0;
				 x=0;
				 y=0;
				 lemx=parent.width;
				 lemy=parent.height;
				 xs=Math.random()*5;
				 ys=Math.random()*5;	
			   }
		   private function Update(evt:Event):void { 
                x+=xs;
				y+=ys;
                if(x>=lemx-width||x<=-1) {
					xs=-xs;
					if(flag==1){
					parent.width=lemx;
					parent.height=lemy;
					this.dispatchEvent(new Event("ArrowHit"));
							   flag=0;
							   }else {
								   parent.width-=(parent.width/100)*5;
					               parent.height-=(parent.height/100)*5;
								   this.dispatchEvent(new Event("ArrowHit"));
								   flag=1;
								   }
				} ;
				if(y>=lemy-height||y<=-1) {
					ys=-ys;
				if(flag==1){	
					parent.width=lemx;
					parent.height=lemy;
				this.dispatchEvent(new Event("ArrowHit"));
				flag=0;
				}else {
					parent.width-=(parent.width/100)*5;
					parent.height-=(parent.height/100)*5;
					this.dispatchEvent(new Event("ArrowHit"));
					flag=1;
					}
					}
		   } 
     } 
}

Старый 19.08.2007, 23:04
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 7  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
закоменть все в функцие Random и набери trace(parent);
Наперед скажу. Его просто еще нет.

Решение точно не знаю, но попробуй super() вписать в конструкторе, а есле не поможет думай.

Старый 19.08.2007, 23:06
tov_diatel вне форума Посмотреть профиль Отправить личное сообщение для tov_diatel Найти все сообщения от tov_diatel
  № 8  
Ответить с цитированием
tov_diatel

Регистрация: Dec 2005
Сообщений: 113
И что делать?

Старый 19.08.2007, 23:12
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 9  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
Код:
import flash.display.*;

var s:Sprite=new Sprite();
trace(s.parent); //null
addChild(s);
trace(s.parent); //[object MainTimeline]
Понимаешь?

Старый 19.08.2007, 23:38
tov_diatel вне форума Посмотреть профиль Отправить личное сообщение для tov_diatel Найти все сообщения от tov_diatel
  № 10  
Ответить с цитированием
tov_diatel

Регистрация: Dec 2005
Сообщений: 113
так?
Код:
package main { 
     import main.Arrow;
	 import flash.text.*;
	 import flash.events.EventDispatcher;
	 import flash.display.Sprite; 
     import flash.events.Event; 
     import flash.display.*;
   
    dynamic public class Text extends Sprite { 
         
		  public var score:Number;
		  public var score1:String;
		  
		  public function Text() { 
              var arr:Arrow = new Arrow();
			  addChild(arr);
			  score=0;
              arr.addEventListener("ArrowHit",handleEvent);	 
			  
           } 
           private function handleEvent(evt:Event):void { 
           

		    score+=1;
		    score1=score.toString();
			this.quantity.text=score1;  
           } 
     } 
}
та же ошибка!

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

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

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


 


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


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