Actionscript 3 闪存AS3命中测试转到下一帧
我有一个可以拖到另一个对象中的对象。我已经为碰撞设置了命中测试。当碰撞发生时,我想前进到下一帧,但是,我必须单击可拖动对象才能这样做。我希望它立即移动到下一帧而不单击。有没有办法解决这个问题 我的意思是,在拖动对象以创建碰撞后,我需要再次单击对象以前进到下一帧。我不想再次单击该对象,我希望它在发生碰撞时转到下一帧 这是我的密码Actionscript 3 闪存AS3命中测试转到下一帧,actionscript-3,flash,hittest,Actionscript 3,Flash,Hittest,我有一个可以拖到另一个对象中的对象。我已经为碰撞设置了命中测试。当碰撞发生时,我想前进到下一帧,但是,我必须单击可拖动对象才能这样做。我希望它立即移动到下一帧而不单击。有没有办法解决这个问题 我的意思是,在拖动对象以创建碰撞后,我需要再次单击对象以前进到下一帧。我不想再次单击该对象,我希望它在发生碰撞时转到下一帧 这是我的密码 bottle.buttonMode = true; bottle.addEventListener(MouseEvent.MOUSE_DOWN, drag); bot
bottle.buttonMode = true;
bottle.addEventListener(MouseEvent.MOUSE_DOWN, drag);
bottle.addEventListener(MouseEvent.MOUSE_UP, drop);
function collision():void{
if(bottle.hitTestObject(hit)){
nextFrame();
}
}
function drag(e:MouseEvent):void{
bottle.startDrag();
collision();
}
function drop(e:MouseEvent):void{
bottle.stopDrag();
}
将
collision()
更改为事件侦听器,并将其附加到瓶子上
您应该在拖放后检查碰撞,而不是在拖动开始时检查碰撞:
function collision():void{
if(bottle.hitTestObject(hit)){
nextFrame();
}
}
function drag(e:MouseEvent):void{
bottle.startDrag();
}
function drop(e:MouseEvent):void{
bottle.stopDrag();
collision();
}
试试这个(改编自Gary Rosenzweig):
如果不单击并移动对象,它将如何碰撞?
bottle.buttonMode = true;
bottle.addEventListener( MouseEvent.MOUSE_DOWN, startBottleDrag );
stage.addEventListener( MouseEvent.MOUSE_UP, stopBottleDrag );
function collision():void {
if( bottle.hitTestObject( hit ) ) {
stopBottleDrag();
nextFrame();
}
}
// to keep bottle location as it is when clicked
var clickOffset:Point = null;
function startBottleDrag( e:MouseEvent ) {
clickOffset = new Point( e.localX, e.localY );
bottle.addEventListener( Event.ENTER_FRAME, dragBottle );
}
function stopBottleDrag( e:MouseEvent = null ) {
clickOffset = null;
bottle.removeEventListener( Event.ENTER_FRAME, dragBottle );
}
function dragBottle( e:Event ) {
bottle.x = mouseX - clickOffset.x;
bottle.y = mouseY - clickOffset.y;
collision();
}