タッチ&ドラッグ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; } |
![]() |