首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flash AS3命中测试转到下一帧

Flash AS3命中测试转到下一帧
EN

Stack Overflow用户
提问于 2013-02-05 02:25:14
回答 3查看 6.8K关注 0票数 1

我有一个对象,可以拖到另一个对象中。我已经为碰撞设置了一个命中测试。当碰撞发生时,我想前进到下一帧,但是,我必须单击可拖动的对象才能这样做。我希望它可以立即移动到下一帧,而不需要单击。有什么办法可以解决这个问题吗?

我的意思是,在我拖动了对象以创建碰撞之后,我需要再次单击该对象以前进到下一帧。我不想再次单击对象,我希望它在碰撞发生时转到下一帧。

这是我的代码

代码语言:javascript
运行
复制
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();
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-05 08:19:22

您应该在drop之后检查冲突,而不是在drag的开头

代码语言:javascript
运行
复制
function collision():void{
    if(bottle.hitTestObject(hit)){
        nextFrame();
    }
}

function drag(e:MouseEvent):void{
    bottle.startDrag();
}

function drop(e:MouseEvent):void{
    bottle.stopDrag();
    collision();
}
票数 0
EN

Stack Overflow用户

发布于 2013-02-05 03:31:55

collision()更改为事件监听器,并将其附加到bottle

票数 0
EN

Stack Overflow用户

发布于 2013-02-06 00:21:27

试试这个(改编自Gary Rosenzweig ):

代码语言:javascript
运行
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14693035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档