Я занимаюсь разработкой многоцелевого приложения, и сценарий заключается в том, что мне нужно использовать условную компиляцию для получения событий мыши и / или касания.
Итак, я делаю что-то вроде этого:
Расширение:
package {
import flash.events.MouseEvent;
import flash.display.InteractiveObject;
public class fackeClick extends MouseEvent {
public static const CLICKS:String = "click";
public function fackeClick(type:String, bubbles:Boolean = true, cancelable:Boolean = false, localX:Number=0, localY:Number=0, relatedObject:InteractiveObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0)
{
super(eventType, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
}
}
}
И использование следующим образом:
package {
import flash.display.MovieClip;
import fackeClick;
public class Main extends MovieClip {
public function Main() {
stage.addEventListener(fackeClick.CLICKS, tryClick);
}
//
private function tryClick(e:fackeClick):void {
trace(e);
}
}
}
Это использование приводит к ошибке времени выполнения:
Ошибка типа: Ошибка # 1034: Ошибка приведения типа: невозможнопреобразуйте flash.events::MouseEvent@31510089 в fackeClick.
Если я переключу приватную функцию tryClick (e: fackeClick) на приватную функцию tryClick (e: MouseEvent), она заработает.Но мне действительно нужно передать пользовательское событие в функцию.
"fackeClick" будет классом, написанным в разных пакетах, расширяющим Mouse или TouchEvents
Пожалуйста, я знаю, что мы можем использовать clickkeventsкак тушевентс и т. д. Я нахожусь в очень своеобразном сценарии и действительно должен делать вот так.
Есть мысли?