Переопределить Clone () в настраиваемом событии для AS3… нужна помощь

Я создал собственный класс четности, который довольно прост. Но при вызове события и последующей передаче этого события другому классу я обнаружил ошибку «не могу преобразовать 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.

1
задан pfunc 31 August 2010 в 15:29
поделиться

2 ответа

Я думаю, вам нужна функция клонирования, чтобы возвращать тип 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);
        }
    }
}
-1
ответ дан 2 September 2019 в 21:45
поделиться

Не знаю, так ли это, но у вас есть дополнительный параметр $info:Object в вашем пользовательском событии, но вы не передаете его в свой конструктор клонов.

return new MyCustomEvents(type, info, bubbles, cancelable);
0
ответ дан 2 September 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: