Apache flex 鼠标移动触发鼠标单击(Adobe Air)

Apache flex 鼠标移动触发鼠标单击(Adobe Air),apache-flex,actionscript,air,Apache Flex,Actionscript,Air,我试图在SpriteVisualElement上实现两个来宾,我认为这应该是非常简单的实现: 移动鼠标以进行扫掠手势,并单击鼠标以启用 因此,我的舞台上有两个Eventlisteners: stage.addEventListener(MouseEvent.CLICK, taphandler); stage.addEventListener(MouseEvent.MOUSE_DOWN, mousedownhandler); 主要问题是,屏幕上的每种类型的扫描都会触发taphandler 关于如

我试图在SpriteVisualElement上实现两个来宾,我认为这应该是非常简单的实现:

移动鼠标以进行扫掠手势,并单击鼠标以启用

因此,我的舞台上有两个Eventlisteners:

stage.addEventListener(MouseEvent.CLICK, taphandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mousedownhandler);
主要问题是,屏幕上的每种类型的扫描都会触发taphandler

关于如何识别正确的事件有什么想法吗


只有在以下情况下,我才尝试与我的taphandler联系!event.buttondown但未成功。

是否需要处理MouseEvent.CLICK?或者你只是想分别处理一个点击和一个拖动。如果是这种情况,请尝试以下两种方法中的一种:

MySprite.addEventListener(TouchEvent.TOUCH_TAP, taphandler);
MySprite.addEventListener(PressAndTapGestureEvent.GESTURE_PRESS_AND_TAP, taphandler);
请注意,这些事件处理程序位于精灵上,而不是舞台上

要进行触摸和拖动,请尝试:

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
MySprite.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);

function onTouchBegin(eBegin:TouchEvent) {
     eBegin.target.startTouchDrag(eBegin.touchPointID, false, bg.getRect(this));
     trace("touch begin");

 }

function onTouchMove(eMove:TouchEvent) {
    trace(eMove.stageX);
}

function onTouchEnd(eEnd:TouchEvent) {
     eEnd.target.stopTouchDrag(eEnd.touchPointID);
     trace("touch end");
}
您可能遇到的唯一问题是TouchEvent.TOUCH\u TAP和TouchEvent.TOUCH\u BEGIN都可能被解释为您的设备上的MouseClick.TOUCH,因此如果您的sprite上连接了MouseClick.TOUCH的处理程序,则会发生冲突


顺便说一句,这些信息大多来自Flex,Flex有单独的触摸手势事件,使用这些手势事件只需给我带来简单的刷卡识别。。我需要在刷卡手势中使用每个位置,而我只能使用TouchEvent或MouseeEvent。。但两者都会与click发生冲突,看起来您必须将mousedown事件作为touch start,mouseup作为touch end。然后,您必须编写代码来检查鼠标是否在某个时间间隔内向下和向上移动,单击鼠标是否在较长时间间隔内保持或位置正在移动dragHi eterps,代码很好,但对我的问题没有任何帮助。。甚至不需要使用多点触控、手势或除鼠标事件以外的任何其他事件,因为轻触/点击总是在移动时触发。。我现在假设每个事件都是点击,但检查是否更多,并在屏幕上移动时防止点击。