flash as3 hitdetection 功能触发其他功能

Posted

技术标签:

【中文标题】flash as3 hitdetection 功能触发其他功能【英文标题】:flash as3 hitdetection function triggering other function 【发布时间】:2014-04-10 11:31:44 【问题描述】:

我正在尝试编写一个脚本,在该脚本中,一个电影剪辑放下一根绳子,如果碰到绳子,就会抓到鱼。这是问题,我正在使用 hitTestObject 来检测碰撞。当然,问题是我在触摸时触发了该功能,但只要它不触摸移动电影的功能就开始了,所以基本上鱼会上升几秒钟,然后再次开始直线移动。

为了尝试修复我尝试创建一个布尔变量,该变量根据命中更改为真或假,并相应地使动画剪辑移动但也不起作用,因为只要一个 mc 不接触另一个 mc 它就会从 true 变为false 或 1 到 0 ..都试过了(如布尔变量和数字变量)。任何帮助或让我走上正确的方向将不胜感激。非常感谢

// fish capture code
this.addEventListener(Event.ENTER_FRAME,handleCollision);

function handleCollision(e:Event):void


    if (ropeHit.hitTestObject(fishy_1_a))
    
        stopFish1();
        trace(movefish1);
    
    else
    
        moveFish1();
    




//code enemy fishy 

//fish 1 A
    function moveFish1()
    
        if (fishy_1_a.x < 800)
        
            fishy_1_a.x +=  xSpeed;
        
        else if (fishy_1_a.x >= 800)
        
            fishy_1_a.x = -100;
        
    

    function stopFish1()
    
        fishy_1_a.y -=  xSpeed;
    

【问题讨论】:

【参考方案1】:

定义一些标志,你可以测试:

function handleCollision(e:Event):void 
    //Check if fishy is caught
    if (!fishy_1_a.catched && ropeHit.hitTestObject(fishy_1_a)) 
        //Change flag
        fishy_1_a.catched = true;
        trace("Gotcha!");
     

    if (fishy_1_a.catched) 
        stopFish1();
    else 
        moveFish1();
    

【讨论】:

非常感谢,这么简单的答案,我想不通。

以上是关于flash as3 hitdetection 功能触发其他功能的主要内容,如果未能解决你的问题,请参考以下文章

[AS3]Flash小型日志信息输出器(调试)

Flash as3如何通过鼠标事件停止播放子电影剪辑?

as3.0 橡皮功能2

Flash as3问题???

AS3/Spritesheets/Starling 的 Flash 性能

AS3 Flash 中的类型强制