Цитата:
|
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