Я создал собственный класс четности, который довольно прост. Но при вызове события и последующей передаче этого события другому классу я обнаружил ошибку «не могу преобразовать thisEvent в thisOtherEvent».
Я понимаю, что это связано с тем, что мне нужно было переопределить функцию Clone в моем настраиваемом событии следующим образом:
package com
{
import flash.disply.*;
import flash.events.Event;
public class MyCustomEvents extends Event
{
public static const SOME_EVENT:String = "some_event";
public var info:Object;
public function MyCustomEvents($type:String, $info:Object,$bubbles:Boolean = false, $cancelable:Boolean = false)
{
super($type, $bubbles, $cancelable);
this.info = $info;
}
public override function clone():Event {
return new MyCustomEvents($type, $bubbles, $cancelable);
}
}
}
Однако я все еще получаю эту ошибку, когда отправляю событие. Что еще мне может не хватать?
вот ошибка:
TypeError: Ошибка № 1034: Ошибка приведения типа: невозможно преобразовать com.greensock.events :: TransformEvent @ d8df709в com.customEvents.MyCustomEvents.
Я попытался преобразовать событие в код так:
var deleteImgEvent:MyCustomEvent = new MyCustomEvent(MyCustomEvents.IMAGE_DELETE, {imgData: getImg}, true, false); this.dispatchEvent(deleteImgEvent as MyCustomEvents);
Все еще не повезло.
ОБНОВЛЕНИЕ:
Хорошо, похоже, проблема в библиотеке преобразования greensock. Когда вызывается обработчик событий для моего настраиваемого события, я запускаю функцию класса TransformManager.
_manager.deleteSelection();
Внутри этого класса он отправляет TransformEvent. Не уверен, почему, но он читает это событие удаления как MyCustomEvent.
Я думаю, вам нужна функция клонирования, чтобы возвращать тип MyCustomEvents. Не тип события. И вам нужно добавить информационный параметр, как указано в предыдущем постере.
package com {
import flash.display.*;
import flash.events.Event;
public class MyCustomEvents extends Event {
public static const SOME_EVENT:String = "some_event";
public var info:Object;
public function MyCustomEvents($type:String, $info:Object,$bubbles:Boolean = false, $cancelable:Boolean = false) {
super($type, $bubbles, $cancelable);
this.info = $info;
}
public override function clone():MyCustomEvents {
return new MyCustomEvents(this.type, this.info, this.bubbles, this.cancelable);
}
}
}
Не знаю, так ли это, но у вас есть дополнительный параметр $info:Object
в вашем пользовательском событии, но вы не передаете его в свой конструктор клонов.
return new MyCustomEvents(type, info, bubbles, cancelable);