0

というMovieClipActionScript にエクスポートしましたsmallGainPoints。私がやりたいことはMovieClip、ステージ上でこれの複数のインスタンスを直線または斜めのパスで作成することです。これが完了したらhitTestObject、Points 配列と Player の間で発生させたいと思います。ポイントはステージに追加されますが、HitTest は開始されません。

関数の設定方法は次のとおりです。

この関数は、onEnterFrame ハンドラーから呼び出されるゲームループに追加されます。

private function checkPlayerHitPoints():void 
{
    for (var j:int = 0; j < aPointsArray.length; j++)
    {
        //get current points in j loop
        var currentPoints:smallGainPoints = aPointsArray[j];

        //test if player is hitting current point
        if (player.hitTestObject(currentPoints))
        {
            //remove point on stage
            currentPoints.destroyPoints()
            //remove point from array
            aPointsArray.splice(j, 1);

            nScore += 5;
            updateHighScore();
        }
    }
}

これを正しく行ったかどうかはわかりませんが、ポイントの複数のインスタンスを 1 行に追加して、プレイヤーができるだけ多くのポイントを収集できるようにしたいと考えています。したがって、関数を作成して位置を設定し、コンストラクターに関数を追加して、addPointsToStage()すべてのフレームをループしないようにしました。

private function addPointsToStage():void
{
    for (var i = 0; i < nPoints; i++)
    {
        points = new smallGainPoints();
        stage.addChild(points);
        points.x = (stage.stageWidth / 2);
        points.y = (stage.stageHeight / 2);

        points = new smallGainPoints();
        stage.addChild(points);
        points.x = (stage.stageWidth / 2) + 200;
        points.y = (stage.stageHeight / 2);
    }

これが私がアレイを開始した方法です:

public var points:smallGainPoints;
    private var nPoints:Number = 5;
    private var aPointsArray:Array;

次に、コンストラクターに追加しました:

aPointsArray = new Array();

そのため、ポイントはステージに追加されますが、ヒットテストは機能しません。助けてください!

4

1 に答える 1