タッチ&ドラッグ

Flash Player 10.1 以降、Adobe AIR 2 以降

Sprite クラス に 2 つのメソッドが追加されました。これらは、 Sprite.startTouchDrag() および Sprite.stopTouchDrag() で、タッチポイント入力をサポートしているタッチ対応アプリケーションに追加機能を提供します。これらのメソッドは、マウスイベントに対する Sprite.startDrag() メソッドおよび Sprite.stopDrag() メソッドと同じように機能します。ただし、 Sprite.startTouchDrag() メソッドおよび Sprite.stopTouchDrag() メソッドはいずれも touchPointID 値をパラメーターとして取得します。

ランタイムでは touchPointID 値をタッチイベントのイベントオブジェクトに割り当てます。複数の同時タッチポイントがサポートされている環境では(ジェスチャが処理されない場合でも)、この値を使用して、特定のタッチポイントに応答します。 touchPointID プロパティについて詳しくは、 タッチポイント ID を参照してください。

次のコードは、タッチイベントについて、開始ドラッグイベントハンドラーと停止ドラッグイベントハンドラーの簡単な例を示しています。変数 bg mySprite を含む表示オブジェクトです。

mySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); 
mySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
 
function onTouchBegin(e:TouchEvent) { 
    e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); 
    trace("touch begin"); 
} 
 
function onTouchEnd(e:TouchEvent) { 
    e.target.stopTouchDrag(e.touchPointID); 
    trace("touch end"); 
}

また、次のコードは、ドラッグ操作にタッチイベントのフェーズを組み合わせた、より高度な例を示しています。

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 
var mySprite:Sprite = new Sprite(); 
 
mySprite.graphics.beginFill(0x336699); 
mySprite.graphics.drawRect(0,0,40,40); 
addChild(mySprite); 
 
mySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); 
mySprite.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
mySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
 
function onTouchBegin(evt:TouchEvent) { 
    evt.target.startTouchDrag(evt.touchPointID); 
    evt.target.scaleX *= 1.5; 
    evt.target.scaleY *= 1.5; 
} 
 
function onTouchMove(evt:TouchEvent) { 
    evt.target.alpha = 0.5; 
} 
 
function onTouchEnd(evt:TouchEvent) { 
    evt.target.stopTouchDrag(evt.touchPointID); 
    evt.target.width = 40; 
    evt.target.height = 40; 
    evt.target.alpha = 1; 
}