【问题标题】:flash as3 hitdetection function triggering other functionflash as3 hitdetection 功能触发其他功能
【发布时间】: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;
    }

【问题讨论】:

    标签: actionscript-3 flash actionscript flash-cs5 flash-cs4


    【解决方案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();
        }
    }
    

    【讨论】:

    • 非常感谢,这么简单的答案,我想不通。
    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2017-03-13
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多