0

object(1).y がステージを超えるたびに object(2) をランダムにしようとしています。しかし、問題は、それが常に動いていて、時には変更しようとしているその位置を「ジャンプ」することです。で試してみました"if (road1.y >= stage.stageHeight) {"が、トリガーしません。そして、私がそれをやっているとき、それがステージに2回前にあったときにのみ、動きの速度がトリガーされます. すべての MovieClip の登録ポイントは左上にあります。コードはこれです

private var road1,road4:Road1;
    private var road2:Road2;
    private var road3:Road3;
    private var randomRoad:Sprite = new Sprite();
    private var offset:Number = 0;
    private var counter:Number = 0;


public function onAdded(e:Event):void {
        removeEventListener(Event.ADDED_TO_STAGE,onAdded);
        addChild(road1=new Road1());
        addChild(randomRoad);
        addChild(road4=new Road1());
        addEventListener(Event.ENTER_FRAME, onEnterFrame);
    }

    public function onEnterFrame(e:Event):void {


        if (startRandom == true) {
            if (Math.random() > 0.5) {
                randomRoad.addChild(road2 =new Road2());
            } else {
                randomRoad.addChild(road3 =new Road3());
            }
            startRandom = false;
            trace(randomRoad);
            trace(startRandom);
        }

        if (road1.y >= stage.stageHeight) {
            startRandom = true;
            trace("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
        }

        offset +=  speed;
        counter++;
        road1.y = offset % 800 - 800;
        randomRoad.y = road1.y + road1.height;
        road4.y = randomRoad.y + randomRoad.height;

    }
4

3 に答える 3

0

オブジェクトのスポーンを移動距離に基づいた方が論理的ではないでしょうか? そうすれば、画面に対する特定の道路片の y 位置の決定に依存しなくなります。

道路があるので、このゲームには車があると仮定します。車に距離変数を与え、速度に基づいてその変数をインクリメントします。

distance += speed;
if (distance > 400)
{
    spawnObject();
    distance = 0; // reset the distance traveled.
}

編集:道路の脇にオブジェクトをスポーンしようとしていると思っていたので、あなたがやろうとしていることを誤解したかもしれません。これは、それらをスポーンするタイミングを決定する方法でした. 読み直してみると、あなたがスポーンしようとしている「オブジェクト」は次のロード ピースそのもののようです。「オブジェクト(2)」ではなく、質問に道路という単語を使用する方が良いでしょう

于 2013-08-29T04:35:38.050 に答える
0

ステージの高さは?800? おそらく問題は、road1.y が -1 よりも大きくならないことです。

于 2013-08-28T13:27:11.303 に答える
0

ここに画像の説明を入力

これを試して:

if (road1.y >= -speed) {
    startRandom = true;
    trace("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
}
于 2013-08-28T18:18:20.813 に答える