0

嘿伙计们,基本上我要做的是当我的播放器与数组中的所有 5 个点 MovieClips 和目标电影剪辑发生碰撞时,我希望出现一个文本说“完美。但我不能完全做到这一点。我设置启动函数,它似乎会,但我认为可能有问题的是 hitTest 与数组中的所有电影剪辑。

这是我的设置方式:

这是我的循环功能:

private function gameLoop(e:Event):void 
    {

        perfectTextFunction();

            }

这是功能:

private function perfectTextFunction():void 
    {


        if (player.hitTestObject(mcGoal_1 && points))
        {
            trace("perfect Text");
                    mcPerfect = new perfectText();
                    mcPerfect.x = (stage.stageWidth / 2);
                    mcPerfect.y = (stage.stageHeight/ 2);
                    stage.addChild(mcPerfect);

        }
    }

Trace 什么也没找到。

如果需要,以下是如何将点添加到舞台的方法:

public function addPointsToStage():void
    {            
         for (var i = 0; i < nPoints; i++)
         {
             trace(aPointsArray.length);
             points = new mcGainPoints();
             stage.addChild(points);
             points.x = startPoint.x + (xSpacing * i);
             points.y = startPoint.y - (ySpacing * i);
             aPointsArray.push(points);
         }

    }

请任何帮助将不胜感激!谢谢你!

VESPER 这是我制作嵌套循环的方式:

//If all points are hit then Perfect Hit Text
                if (player.hitTestObject(mcGoal_1 || mcGoal_2)) 
                { 
                        var weHitAll:Boolean = true;

                    for (var s in aPointsArray)
                    {
                          weHitAll = weHitAll && player.hitTestObject(aPointsArray[s]);
                           if (!weHitAll) 
                           break;
                    } 
                    if (weHitAll)
                    {

                                trace("perfect Hit");
                                mcPerfect = new perfectText();
                                mcPerfect.x = (stage.stageWidth / 2);
                                mcPerfect.y = (stage.stageHeight/ 2) - 80;
                                stage.addChild(mcPerfect);

                                nScore += 25;
                                updateHighScore();


                    }

                }
4

1 回答 1

1
var weHitAll:Boolean=true;
for (var s in aPointsArray) {
    weHitAll = weHitAll&&player.hitTestObject(aPointsArray[s]);
    if (!weHitAll) break; // missed one, drop cycle
}
if (weHitAll) {
    trace('Perfect hit!');
    ... // etc
}

函数hitTestObject只接受一个对象作为参数,为了检查一个数组,你需要遍历它,一次检查一个对象(这里是 in aPointsArray[s])。

于 2013-05-28T06:53:04.347 回答