每当对象(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;
}
答案 0 :(得分:0)
舞台的高度是多少? 800?也许问题出在那条路上。永远不会超过-1;
答案 1 :(得分:0)
试试这个:
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)'
本来会更好