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

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

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

Регистрация: Nov 2005
Адрес: 26°58′49.06″ 49°24′35.72″ Ymaps
Сообщений: 119
Отправить сообщение для ZGG с помощью ICQ Отправить сообщение для ZGG с помощью Skype™
Question Передача Event вверх по иерархии, потеря свойств.

Здравствуйте!
Помогите разобраться начинающему кодеру.

Есть главный класс Main:
Код AS3:
package
{
	import flash.display.*;
 
	public class Main extends Sprite
	{
		public function Main():void
		{
			var a:A = new A()
			a.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
			a.askForEvent()
		}
 
		private function onSimpleEvent(e:SimpleEvent):void 
		{
			trace(e.someVar)
		}
	}
}
Класс A:
Код AS3:
package
{
	import flash.events.EventDispatcher;
 
	public class A extends EventDispatcher
	{
		private var b:B;
 
		public function A()
		{
			super()
			b = new B()
			b.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
		}
		public function askForEvent():void
		{
			b.doEvent()
		}
		private function onSimpleEvent(e:SimpleEvent):void
		{
			dispatchEvent(e)
		}
	}
}
Класс B:
Код AS3:
package
{
	import flash.events.EventDispatcher;
 
	public class B extends EventDispatcher
	{
		public function B()
		{
			super()
		}
		public function doEvent():void
		{
			var event:SimpleEvent = new SimpleEvent(SimpleEvent.MY_TYPE)
			event.someVar = "hello!";
			dispatchEvent(event)
		}
	}
}
Ну и собственно сам SimpleEvent:
Код AS3:
package  
{
	import flash.events.Event;
 
	public class SimpleEvent extends Event 
	{
		public static const MY_TYPE:String = "my_type"		
		private var _someVar:String
 
		public function SimpleEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) 
		{ 
			super(type, bubbles, cancelable);			
		} 		
		public override function clone():Event 
		{ 
			return new SimpleEvent(type, bubbles, cancelable);
		} 		
		public override function toString():String 
		{ 
			return formatToString("SimpleEvent", "type", "bubbles", "cancelable", "eventPhase"); 
		}		
		public function get someVar():String 
		{
			return _someVar;
		}		
		public function set someVar(value:String):void 
		{
			_someVar = value;
		}		
	}
}
Обясните пожалуйста, почему обработчик событий onSimpleEvent в главном классе выводить null, а не "hello!" ? Неужели мне для баблинга события надо создавать новый экземпляр SimpleEvent в обработчике onSimpleEvent класса B и его свойству someVar присваивать свойство someVar уже отдиспатченного события?

типа так:
Код AS3:
package
{
	import flash.events.EventDispatcher;
 
	public class A extends EventDispatcher
	{
		private var b:B;
 
		public function A()
		{
			super()
			b = new B()
			b.addEventListener(SimpleEvent.MY_TYPE, onSimpleEvent)
		}
		public function askForEvent():void
		{
			b.doEvent()
		}
		private function onSimpleEvent(e:SimpleEvent):void
		{
			var event:SimpleEvent = new SimpleEvent(SimpleEvent.MY_TYPE)
			event.someVar=e.someVar			
			dispatchEvent(event)
		}
	}
}
__________________
ЛОГИКА - залог программирования!

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

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

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


 


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


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