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

        }
    }

トレースは何も取得しません。

必要に応じてポイントをステージに追加する方法は次のとおりです。

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


                    }

                }
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はパラメーターとして単一のオブジェクトのみを受け入れます。配列を確認するには、一度に 1 つのオブジェクトを確認しながら反復する必要があります (ここではaPointsArray[s])。

于 2013-05-28T06:53:04.347 に答える