AS3 尝试使用 if 语句使用 hitTestObject 创建一个函数

问题描述 投票:0回答:1

我有一个带有代码的函数

function ball3test()
{
    if (ball3.hitTestObject(ball1_t))
    {
        goodmc.alpha = 1;
        removeChild(ball3);
        sw = sw + 1;
        ball3t.alpha = 1;
        setTimeout(hidhap, 1000);
        ss = ss + 1;
        ssdone();
    }
    else
    {
        sadmc.alpha = 1;
        ball3.x = ball3X;
        ball3.y = ball3Y;
        setTimeout(hidsad, 1000);
        ssdone();
    }
}

现在当我测试 ball3.hitTestObject(ball1_t) 时,好的 mc 和悲伤的 mc 一起显示..这让我发疯,我不知道出了什么问题 当命中测试发生时,goodmc和sadmc一起可见,它应该只是goodmc,而不是两者 然而,当命中测试没有发生时,sadmc 仅显示

actionscript-3 flash flash-cs6
1个回答
0
投票

因此,我将您的代码编辑为可读性。始终这样做,格式化代码并正确对齐:它可以将正在发生的事情的可见性和透明度提高十倍。

然后,你的问题的本质。我在提供的代码片段中没有看到任何错误,但我怀疑这个函数被同时调用了多次,这就是为什么您将其视为正在执行的条件子句下的两个语句的令人兴奋的情况。

我建议将调试跟踪添加到您的代码中:

import flash.utils.getTimer;

function ball3test()
{
    trace("A", getTimer());
    
    if (ball3.hitTestObject(ball1_t))
    {
        goodmc.alpha = 1;
        removeChild(ball3);
        sw = sw + 1;
        ball3t.alpha = 1;
        setTimeout(hidhap, 1000);
        ss = ss + 1;
        ssdone();
        
        trace("B", getTimer());
    }
    else
    {
        sadmc.alpha = 1;
        ball3.x = ball3X;
        ball3.y = ball3Y;
        setTimeout(hidsad, 1000);
        ssdone();
        
        trace("C", getTimer());
    }
}

然后,执行后,您可能会看到类似以下内容:

A xxx
B xxy
A zzz
C zzq

如果我是对的,那么你需要弄清楚为什么你的函数在它已经被调用之后被调用(这可能是设计使然),然后寻找阻止它的方法。

© www.soinside.com 2019 - 2024. All rights reserved.