Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 扩展鼠标事件_Actionscript 3_Actionscript - Fatal编程技术网

Actionscript 3 扩展鼠标事件

Actionscript 3 扩展鼠标事件,actionscript-3,actionscript,Actionscript 3,Actionscript,我正在开发一个多目标应用程序,场景是我必须使用一些条件编译来获取鼠标和/或触摸事件 所以我在做这样的事情: package { import flash.display.MovieClip; import fackeClick; public class Main extends MovieClip { public function Main() { stage.addEventListener(fackeClick

我正在开发一个多目标应用程序,场景是我必须使用一些条件编译来获取鼠标和/或触摸事件

所以我在做这样的事情:

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);

            }
    }

}
扩展:

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);

            }
    }

}
此用法会引发运行时错误:

TypeError:错误#1034:类型强制失败:无法转换flash。事件::MouseEvent@31510089点击fackeClick

如果我将私有函数tryClick(e:fackeClick)切换到私有函数tryClick(e:MouseEvent),它会工作。但我确实需要将自定义事件传递给函数

“fackeClick”将是一个用不同包编写的类,扩展鼠标或TouchEvents

拜托,我知道我们可以使用clickevents作为touchevents等。 我处在一个非常特殊的情况下,我真的必须这样做


有什么想法吗?

引发的错误是因为您的
传真单击。单击
鼠标事件使用相同的字符串。单击
。现在Flash捕捉到了
“点击”
,并发送正常的
鼠标事件。这与您的
fakeClick
类冲突

这就引出了下一个问题,我认为不可能像这样延长这些事件。Flash处理
MouseEvent
本身,因此简单地扩展
MouseEvent
不会使Flash分派您的自定义事件,而不是真正的
MouseEvent
(或
TouchEvent

有关Flash如何处理“点击”事件的更多(官方)信息,请参阅文档:


不过我也不是百分之百的关注这件事,也许你可以通过在舞台上听MouseEvents和TouchEvents找出一个解决办法,然后发布你自己的活动。它不会很漂亮,但可能会工作。

引发的错误是因为您的
fackeClick。单击使用与
MouseeEvent相同的字符串。单击
。现在Flash捕捉到了
“点击”
,并发送正常的
鼠标事件。这与您的
fakeClick
类冲突

这就引出了下一个问题,我认为不可能像这样延长这些事件。Flash处理
MouseEvent
本身,因此简单地扩展
MouseEvent
不会使Flash分派您的自定义事件,而不是真正的
MouseEvent
(或
TouchEvent

有关Flash如何处理“点击”事件的更多(官方)信息,请参阅文档:


不过我也不是百分之百的关注这件事,也许你可以通过在舞台上听MouseEvents和TouchEvents找出一个解决办法,然后发布你自己的活动。这不会很漂亮,但可能会奏效。

非常感谢您的解释。我已经试过几种方法,但都没有成功。我猜这根本不可能像你说的那样。但这真的很烦人。为什么玩家无法转换事件,因为它扩展了mouseevent?我只想用同一个名字,该死的!:)无论如何,非常感谢你的帮助。非常感谢你的解释。我已经试过几种方法,但都没有成功。我猜这根本不可能像你说的那样。但这真的很烦人。为什么玩家无法转换事件,因为它扩展了mouseevent?我只想用同一个名字,该死的!:)无论如何,非常感谢你的帮助。