HitTest函数有两个参数没有初始化

时间:2013-05-28 06:40:53

标签: actionscript-3 function hittest

嘿伙计们所以基本上我要做的就是当我的玩家与数组中的所有5个点MovieClips发生碰撞而目标电影剪辑我希望文本显示为“完美。但我无法完成这个我设置了这个功能,看起来似乎可以,但我认为可能出错的是带有阵列中所有Movie剪辑的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这就是我制作NESTED LOOP的方式:

//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();


                    }

                }

1 个答案:

答案 0 :(得分: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只接受一个对象作为参数,以便检查需要迭代的数组,一次检查一个对象(这里是aPointsArray[s])。 / p>