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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
caseyryan, я описал тут почему я хочу попробовать новый подход.
Мы говорим о разных вещах. Похоже у вас не четкое представление о наследовании в ООП
Зачем нужно посылать TransportEvent, пытаясь его выдать за ManEvent, когда можно просто сделать свойство в TransportEvent публичным, и оно будет доступно как в ManEvent, так и в TransportEvent и в других местах, где есть доступ к объекту ManEvent или TransportEvent.
Что мешает сделать так?
Код AS3:
package  {
	import flash.events.Event;
 
	/**
	 * ...
	 * @author Konstantin
	 */
	public class TransportEvent extends Event {
 
 
 
		public var dog:Object = null;
 
		public function TransportEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { 
			super(type, bubbles, cancelable);
 
		} 
 
		public override function clone():Event { 
			var event:TransportEvent = new TransportEvent(type, bubbles, cancelable);
			event.dog = this.dog;
			return event;
		} 
 
		public override function toString():String { 
			return formatToString("TransportEvent", "type", "bubbles", "cancelable", "eventPhase"); 
		}
 
	}
 
}
package  {
	import flash.events.Event;
 
	/**
	 * ...
	 * @author Konstantin
	 */
	public class ManEvent extends TransportEvent {
		public static const DOG_BUY:String = "dogBuy";
 
		public function ManEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { 
			super(type, bubbles, cancelable);
 
		} 
 
		public override function clone():Event { 
			var event:ManEvent = new ManEvent(type, bubbles, cancelable);
			event.dog = this.dog;
			return event;
		} 
 
		public override function toString():String { 
			return formatToString("ManEvent", "type", "bubbles", "cancelable", "eventPhase"); 
		}
 
	}
 
}
 
// а где-то в классе Man
var event:ManEvent = new ManEvent(ManEvent.DOG_BUY);
event.dog = какаяТоСобака;
dispatchEvent(event);
 
// и, соответственно, слушать надо будет ManEvent.DOG_BUY