觸控和拖曳

Flash Player 10.1 以及更新的版本,Adobe AIR 2 以及更新的版本

Sprite 類別中新增兩種方法,以提供支援觸控點輸入之觸控應用程式的其他支援: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; 
}