每次对象如何随机.Y不在舞台上

时间:2013-08-28 12:39:36

标签: actionscript-3

每当对象(1).y超出舞台时,我试图随机对象(2)。但问题在于它不断移动,有时它的“跳跃”位置在我想要改变的位置。 我确实试过了"if (road1.y >= stage.stageHeight) {",但它没有触发。 当我这样做的时候,只有当它已经在舞台上2次之前它才会触发它的速度。 所有MovieClip的注册点都在TOP LEFT中。 代码就是这个

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;

    }

3 个答案:

答案 0 :(得分:0)

舞台的高度是多少? 800?也许问题出在那条路上。永远不会超过-1;

答案 1 :(得分:0)

enter image description here

试试这个:

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

答案 2 :(得分:0)

根据行进的距离来生成物体是不是更符合逻辑?然后,它不依赖于确定给定道路相对于屏幕的y位置。

我将假设你在这场比赛中有一辆车,因为有道路。给汽车一个距离变量,并根据速度增加该变量。

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

编辑: 我想我可能误解了你想要做的事情,因为我以为你试图在路边产生物体,这是一种确定何时产卵的方法。在重新阅读它时,它似乎是一个对象'你试图产卵是下一个道路本身。在你的问题中使用单词road而不是' object(2)'

本来会更好