私はSpriteVisualElementに2つのゲストを配備しようとしていますが、これはかなりシンプルに実装する必要があります。
掃引のためのMouse_Moveジェスチャーとマウスをクリックすると有効になります..
だから私は私の舞台に2人のイベントリスナーを持っています:
stage.addEventListener(MouseEvent.CLICK, taphandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mousedownhandler);
主な問題は、スクリーン上のすべてのタイプのスイープもタップラー()を発生させることです。
正しいイベントを特定する方法に関するアイデアはありますか?
私は(!event.buttondown)しかし、成功しなかった場合にのみ、私のタファンドラーに挑戦しました。
回答:
回答№1は0MouseEvent.CLICKを特に処理する必要がありますか?または、タップとドラッグを別々に処理しようとしていますか?このような場合は、これらの2つのうちの1つをタップしてみてください:
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として解釈される可能性があります。そのため、スプライトにMouseClick.TOUCHのハンドラがある場合、競合が発生します。
ところで、この情報のほとんどは Adobe Actionscript 3.0リファレンス - TouchEvent