расширить события мыши - PullRequest
1 голос
/ 15 декабря 2011

Я занимаюсь разработкой многоцелевого приложения, и сценарий заключается в том, что мне нужно использовать условную компиляцию для получения событий мыши и / или касания.

Итак, я делаю что-то вроде этого:

Расширение:

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как тушевентс и т. д. Я нахожусь в очень своеобразном сценарии и действительно должен делать вот так.

Есть мысли?

1 Ответ

1 голос
/ 15 декабря 2011

Выдается ошибка, потому что ваш fackeClick.CLICKS использует ту же строку, что и MouseEvent.CLICK.Так что теперь Flash ловит 'click' и отправляет нормальный MouseEvent.Что конфликтует с вашим fakeClick классом.

Это подводит меня к следующему вопросу, я не думаю, что возможно продлить эти события, как это.Flash обрабатывает сам MouseEvents, поэтому простое расширение MouseEvent не заставит Flash отправлять ваше пользовательское событие вместо реальной MouseEvent (или TouchEvent).

Дополнительная (официальная) информация о том, как Flashобрабатывает событие 'click', его можно найти в документации:

InteractiveObject - щелкните

Но опять же, я не на 100% об этом, и, возможно, вы можетеНайдите обходной путь, слушая MouseEvents и TouchEvents на сцене, и отправьте собственное событие после этого.Это не будет красиво, но, возможно, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...