我使用startDrag()来拖动对象A,当它击中对象时B函数停止拖动。 问题是,如果我将对象A拖得太快进入对象B,它会在对象B内停止拖动。 我的手比每帧检查碰撞48次的功能更快吗?
var A:MovieClip;
addEventListener(MouseEvent.MOUSE_DOWN,dad);
addEventListener(Event.ENTER_FRAME,update);
function dad(e:MouseEvent)
{
A = MovieClip(e.target);
A.startDrag();
}
function update(e:Event)
{
if (A !=null && A.hitTestObject(B))
{
A.stopDrag();
}
}
答案 0 :(得分:0)
尝试使用MouseEvent.MouseMove事件而不是MouseEvent.EnterFrame。
另外,请考虑这一点:命中测试检测对象是否发生碰撞。它没有分隔碰撞对象。如果您的对象在帧之间移动10个像素,则对象将测试为碰撞,但最多可能有10个像素的重叠。 使用stopDrag()不足以分隔对象。
根据重叠对象的形状,分离它们的任务可能很简单,也可能非常复杂。如果它们都是圆形的,那么它很容易。如果它们都是凹面多边形,那么你就会陷入数学伤害的世界。
以下是我过去用于简单游戏的一些分离方法。 Circle-Cirle collision and separation Circle-Line collision and Separation
(是的,你的手比那个快:-))