0

私はフラッシュでゲームを作っていましたが、解決できない問題が少しあります:S

敵が左から右にスポーンしているとしましょう。3 種類の敵がいるとしましょう。

今のところ、各タイプの敵の量を生成し、それらを垂直スケール (Math.random()*stage.stageWidth) のランダムな位置に配置する for ループを作成するだけです。

ゲームを再起動すると、互いに交差する敵と波が同じになることはありません。

EnemyContainer のような MovieClip を作成し、手動で敵をフォーメーションまたはパターンに配置して制御する方法を考えていました。

問題は、Enemy クラス コンストラクターがステージや速度などへの参照などの引数を使用していて、オブジェクトをムービークリップにドロップすると、その時点でステージを定義できないためにエラーが発生することです。

敵の波をパターンで作る方法を知っている人はいますか?

Enemy のコンストラクタは次のとおりです。

public function Enemy(stageRef:Stage, firerate:Number=1000, speed:Number=1) {

ご覧のとおり、3 つの引数が必要ですが、敵のムービークリップを EnemyContainer ムービークリップにドロップすると、ステージを定義できないため、エラーが発生します。

その上、敵のパターンを含む 1 つの巨大なムービークリップを作成するというアイデアが正しい方法であるかどうかはわかりません。

もう 1 つのことは、異なる敵のタイプが異なるフレームの 1 つの MovieClip 敵にあり、それらを 1 つの MovieClip にドロップすると制御できないことです。

4

1 に答える 1

0

私はそれを行う正しい方法を見つけたと思うので気にしないでください。

問題は、敵のオブジェクトをEnemyContainerに追加していたことです。

ここで、ダミーのMovieClipを追加し、forループを使用して、EnemyContainerのすべての子を反復処理し、子の位置を使用してEnemyを作成します。

このような:

public function createEnemyFromContainer():void {
        enemyContainer = new EnemyContainer();
        //stage.addChild(enemyContainer);
        for (var i=0; i<enemyContainer.numChildren; i++) {
            var _tempEnemy_mc:Enemy = new Enemy(stage,1000,0.2+Math.random()*0.3);;

            stage.addChild(_tempEnemy_mc);

            _tempEnemy_mc.x = enemyContainer.getChildAt(i).x;
            _tempEnemy_mc.y = enemyContainer.getChildAt(i).y;
            _tempEnemy_mc.gotoAndStop("tank");
            _tempEnemy_mc.enemyCanon.gotoAndStop("tank");

            enemyObjectsArray.push(_tempEnemy_mc);
        }
    }
于 2012-11-24T19:05:56.790 に答える