触摸和拖动

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; 
}