如何用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?
}
}
还是有其他方法可以阻止拖动事件除了功能下降?
抱歉我的英语不好。//编辑
答案 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);
}
}