【问题标题】:AS3 hittest keeps hittingAS3 hittest 持续命中
【发布时间】:2014-02-20 14:16:04
【问题描述】:

我有以下问题: 我想在“hittest”时保持分数。我使用以下代码:

private function fnMoveMap():void
    {
        for (var i:int = 0; i < vPipeMax; i++)
        {

            var tmpPipe = _conMap.getChildAt(i);
            //trace (tmpPipe.name);

            if (tmpPipe._HIT.hitTestPoint(_P.x, _P.y, true))
            {
                tmpPipe.visible = false;

                //stage.removeEventListener(Event.ENTER_FRAME, setScore);
                vScores++;
                txtScores.text = vScores.toString();
                //break;
            }
            //reset pos
            if (tmpPipe.x < 0)
            {
                //stage.addEventListener(Event.ENTER_FRAME, setScore);
                tmpPipe.visible = true;
                tmpPipe.x = 1050 - vXSpeed;
                tmpPipe.y = randomRangeMC(minPipeY, maxPipeY);
                //set score
                //vScores++;
                //txtScores.text = vScores.toString();
            }
            else
            {
                tmpPipe.x -= vXSpeed;

            }
        }
    }

var vScores 保持计数 4 到 8 次。 我怎么能数一数呢?

【问题讨论】:

  • 好吧,我不知道vPipeMax 是什么,但你在那个for循环中循环了多次(可能),所以我猜这就是你的分数每次增加4-8的原因你触发它。
  • vPipeMax 是 3。我知道它在一个循环中,但我怎样才能让它免受多个命中测试?

标签: actionscript-3 hittest


【解决方案1】:

vScores 变量递增 4-8 的原因是因为您使用 for 循环多次循环到 vPipeMax

您要么需要重组代码以防止这种情况发生,要么在您增加分数后立即将break 退出循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多