最热的不会起作用

时间:2014-06-01 19:31:16

标签: actionscript-3 hittest

好的,我有点问题。我有两个对象(每个对象中有两个按钮,它们是不可见的),第一个对象叫做“crveno”,第二个叫“zeleno”。 “zeleno”有一个叫做“zlhit”的最热门区域,而“crveno”有一个叫做“chit”的最热门区域,都是按钮。

我还有4个具有类似命中测试的对象,都可以正常工作。

这对zeleno和crveno来说是最热门的。我想zeleno回到它的起始位置,当它击中crveno.chit,但它不起作用。它保持在当前的位置,并且crveno开始了位置。另一方面,crveno的hittest作品。这是来自两次测试的代码。

else if (zeleno.zlhit.hitTestObject(crveno.chit))
{
    crveno.x = crveno.x;
    crveno.y = crveno.y;
    zeleno.x = zelenoStartX;
    zeleno.y = zelenoStartY;

}


else if (crveno.chit.hitTestObject(zeleno.zlhit))
{
    zeleno.x = zeleno.x;
    zeleno.y = zeleno.y;
    crveno.x = crvenoStartX;
    crveno.y = crvenoStartY;
}

2 个答案:

答案 0 :(得分:1)

对于实际上相同的条件,你有两个不同的测试即。两个实例的命中区域相交。因此,当else if为这两个实例返回true时,第一个hittest条件将始终执行,并且您的代码永远不会达到第二个else if

如果不了解您正在尝试做什么,很难提供有关如何解决问题的建议,但是如果您希望两个对象在相交时返回到起始位置,则可以将其合并为一个有条件的:

// When crveno and zeleno hit, return both to their start positions
else if (zeleno.zlhit.hitTestObject(crveno.chit))
{
    crveno.x = crvenoStartX;
    crveno.y = crvenoStartY;
    zeleno.x = zelenoStartX;
    zeleno.y = zelenoStartY;

}

答案 1 :(得分:0)

既然你提到crveno确实改变了位置,我假设包含按钮的对象正在更新按钮'物品的位置'职位变动。如果不是这种情况,那么不改变容器对象位置的按钮可能就是问题所在。

否则,似乎zlhit与chit重叠的任何时候,我都希望逆也是真的。由于您的代码包含else if语句,因此只会触发第一个为true的条件。如果您的目标是每个对象在按钮重叠时移回其起始位置,那么您可以尝试以下操作:

if (zeleno.zlhit.hitTestObject(crveno.chit) &&
    crveno.chit.hitTestObject(zeleno.zlhit)) //this 2nd collision check is probably unnecessary
{
    crveno.x = crvenoStartX;
    crveno.y = crvenoStartY;
    zeleno.x = zelenoStartX;
    zeleno.y = zelenoStartY;
}
相关问题