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

时间:2011-10-11 13:36:36

标签: flex actionscript air

我正在尝试在SpriteVisualElement上有两个guest,我认为应该很简单实现:

Mouse_Move用于扫描手势并单击鼠标以启用..

所以我的舞台上有2个Eventlisteners:

stage.addEventListener(MouseEvent.CLICK, taphandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mousedownhandler);

主要问题是屏幕上的每一种扫描都会触发taphandler()......

有关如何识别正确事件的任何想法?

我只在(!event.buttondown)尝试使用taphandler但没有成功。

1 个答案:

答案 0 :(得分:0)

你需要专门处理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_TAP和TouchEvent.TOUCH_BEGIN都可能在您的设备上被解释为MouseClick.TOUCH,因此如果您有一个处理程序连接到您的Sprite for MouseClick.TOUCH,您将拥有一个冲突。

BTW,大部分信息来自Adobe Actionscript 3.0 Reference - TouchEvent