Action Script 3.0:使用hittestobject停止拖动

时间:2015-02-04 19:11:19

标签: actionscript-3

如何用hittestobject停止拖动(事件)对象..谢谢。

object.addEventListener(TouchEvent.TOUCH_BEGIN, drag);
object.addEventListener(TouchEvent.TOUCH_END,drop);
addEventListener(Event.ENTER_FRAME, loop);

function drag(e:TouchEvent):void {
  e.target.startTouchDrag(e.touchPointID);
}
function drop(e:TouchEvent):void {
  e.target.stopTouchDrag(e.touchPointID);
}
function loop(e:Event):void {
  if (object.hitTestObject(collision)) {
    //code to stop drag event?
  }
}

还是有其他方法可以阻止拖动事件除了功能下降?

抱歉我的英语不好。

//编辑

1 个答案:

答案 0 :(得分:0)

在函数drop()中,e.target是当前处理事件的对象。在函数循环()中,您还有一些对象。目前尚不清楚哪一个是拖动,但你应该调用object.stopTouchDrag()或collision.stopTouchDrag()。

更新

startTouchDrag和stopTouchDrag函数都有一个参数--touchPointID,它用于确定处理的触点(很多)。停止拖动时,您需要使用用于启动它的相同touchPointID。从非事件上下文调用stopTouchDrag时,您无法知道它应该使用什么触点。所以你需要以某种方式记住它。如果您的目标对象是MovieClip,您只需向其添加动态属性并将touchPointID保存在那里:

function drag(e:TouchEvent):void {
  (e.target as MovieClip).touchPointID = e.touchPointID; 
  e.target.startTouchDrag(e.touchPointID);
}

function loop(e:Event):void {
   if (object.hitTestObject(collision)) {
      object.stopTouchDrag(object.touchPointID);
   }
}