1

手始めに:私はFlashCS3とActionscript2.0を使用しています

私はフロガーゲームを作り直そうとしています、そして私はちょっと車をスクリーンに置くことに固執しています。

froggerを知らない人のために:http ://www.actionscript.org/showMovie.php?id = 1157 、しかし私はログを実装していません。

大きな問題は、私が3台の車を持っていることです。これらはすべてライブラリにムービークリップであり、ステージに配置しません。複数のインスタンスが同時に表示される必要があります。これらの車は両方向に運転する必要があり、3台すべての車がすべての車線に表示される必要があります(私は4車線です)もちろん、1車線には1方向しかありません。

カエルが車の1つに当たったかどうかを確認するために使用できますhitTest()が、現実的にする必要があります。つまり、各レーンの車の数をハードコーディングすることはできません。

また、ムービークリップをその中心の周りで回転させる方法が見つからないようです...

4

2 に答える 2

2

さて、私が提案できることがいくつかあります。

車の場合は、ライブラリ内で各車を個別のオブジェクトとして作成します(ステージに置かないでください)。画面に表示する必要がある場合は、attachMovie()を使用して目的の車のインスタンスを作成します。

それらを異なる方向に向けるには(左と右が必要だと思います)、ライブラリ内の各車のコピーを2つ作成し、1つを各方向に向けることができます。または、xScale値を-100%に設定すると、水平方向に反転するので、両方に同じライブラリインスタンスを使用できると思います。ただし、方向ごとにローテーションを実行するのではなく、方向ごとに個別のライブラリインスタンスがある場合は、おそらく処理が簡単になります。

于 2009-05-04T14:21:20.780 に答える
1

回転に関する質問に答えるために、ムービークリップは、視覚的な中心ではなく、登録ポイントを中心に回転します。したがって、クリップを作成するときは、シンボル編集画面の十字線が中央に表示されていることを確認してください。十字線は登録ポイントであり、基本的にx:0、y:0がクリップのどこにあるかを定義します。

あなたの質問は、実際には、hitTestを使用して、カエルが車のいずれかに当たったかどうかを確認する方法についてのようです。どの車がステージにあるかなどに関係なく、次のような車のクラスを作成します。カエルへのポインタになることができる静的メンバー。次に、クラスにカエルに当たっているかどうかをチェックさせます。

だから始めに:

public class Car extends MovieClip{     
    public static var frog:MovieClip;
    private var interval;
    public function Car(){
        super();
        interval = setInterval(checkHit,500);
    }
    private function checkHit(){
            if(this.hitTest(frog)){
            trace("the frog hit the car");
            clearInterval(interval);
            //do what you need to do when the frog gets hit 
        }
    }
}

個々の車ごとに、車のクラスを拡張できます。

class Truck extends Car{
    public function Truck(){
        super();
    }
}

class Volkswagen extends Car{
    public function Volkswagen(){
        super();
    }
}

class Bus extends Car{
    public function Bus(){
        super();
    }
}

個々のクラスを作成したら、各車のライブラリシンボルでリンケージを使用します。(シンボルを右クリックし、[リンケージ]を選択して、[クラス]フィールドにクラス名を入力します)。

最後に、カエルのメンバーをステージ上のカエルに設定します

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth())
Car.frog = frog; //set the static var "frog" to your frog instance

そして今、あなたの車はすべて、カエルに当たっているかどうかを自分でチェックする必要があります。

もう1つのオプションは、それぞれにクラスを使用するのではなく、それぞれの異なる車のムービークリップの最初のフレームにそのcheckHit()関数をコーディングすることです。

this.onEnterFrame = function(){
    if(this.hitTest(_root.frog)){
        trace("the frog hit the car");
        //do what you need to do when the frog gets hit 
        delete this.onEnterFrame;
    }
}
于 2009-05-04T15:34:12.917 に答える