0

だから、私は Actionscript 3 の基本に取り組んでいます。ゲームなどを作っています。ピクセル単位の動きなどを使用して、すべてが境界の位置に基づいている小さなスペースを設計しました.

これまでのところ、私の男は箱を押して回ることができ、国境にぶつかったとき、または箱が国境にぶつかったときに箱を押そうとすると停止します。

それで、次は、もう一方の箱にぶつかったときに、前方に発射するようにしたかったのです。横への小ジャンプ。

私は最初にこれを(愚かに)使おうとしました:

// When right and left borders collide.    
if( (box1.x + box1.width/2) == (box2.x - box2.width/2) ) {

    // Nine times through
    for (var a:int = 1; a < 10; a++) {

        // Adds 1, 2, 3, 4, 5, 4, 3, 2, 1.
        if (a <= 5) {
            box2.x += a; }
        else {
            box2.x += a - (a - 5)*2 } } }

ただし、これを移動用に持っていた機能(キーアップを常にチェックするなど)で使用すると、これが一度に行われます。そのようなコマ送りの動きはどこから始めればよいのでしょうか。さらに、実際にはシーンのフレームではなく、動きの中にあります。

これは大量のゴミの山です。申し訳ありませんが、助けていただければ幸いです。

4

1 に答える 1

0

次のようなことを試してください:(ev.targetはリスナーを割り当てたボックスであることに注意してください)

var boxJumpDistance:Number = 0;

function jumpBox(ev:Event){
    if (boxJumpDistance<= 5) {
        ev.target.x += boxJumpDistance; }
    else if(boxJumpDistance<=10){
        ev.target.x += boxJumpDistance - (boxJumpDistance - 5)*2 
    }
    else{
        boxJumpDistance = 0;
        ev.target.removeEventListener(Event.ENTER_FRAME, jumpBox);
    }
}

次に、ループを実行する代わりに、リスナーを追加します。

box2.addEventListener(Event.ENTER_FRAME, jumpBox);

これは現時点では一度に1つのボックスに対してのみ機能しますが(速度に1つの追跡変数のみを使用しているため)、実際に実行したいのは、ボックスクラスの内部でその関数を使用することですが、どのように構造が行きます。他のオプションは、おそらくボックスの動きのための配列を作ることでしょう?フレームごとに配列をループします。boxesMoveArray[1] >=5ボックス1など。

于 2010-04-07T06:38:10.327 に答える