2013-05-02 79 views
0

我正在开发一个类似太空侵略者的游戏。到目前为止,我的敌人在产卵循环是这样的:用于定位敌人的AS3循环

for (var a=0; a<6; a++) 
{ 
    var bd:MovieClip = new bdenemy(); 
    enemy1[a] = bd; 
    addChild(enemy1[a]); 
    enemy1[a].x = 50 + Math.random() * 700; 
    enemy1[a].y = 50; 
} 

然而,当我运行游戏的敌人只是在产卵那些参数,重叠的大部分时间。我怎么能这样做,使每个新的敌人是一个距离前一个x的距离,使用这样的数组? 谢谢。

回答

2

优化

任何东西之前,您应该声明的变量循环之外,避免存储N个变量。

回答

填充宽度

您可以将先前的x存储在一个变量,并确保有每个敌人之间的最小差距。这是如果你想填补你的屏幕宽度与敌人,无论其中多少。

var bd:MovieClip; 
var previousX:uint=0; 
while (previousX + 150 < stage.stageWidth) 
{ 
    bd = new bdenemy(); 
    enemy1.push(bd); 
    addChild(bd); 
    bd.x = previousX + 50 + Math.random() * 100; 
    bd.y = 50; 
} 

50是两个敌人之间的最小差距。

固定金额

如果你想有完全相同6个敌人,整齐地派出你可能会推出一个位置跨度为每个屏幕上。

var bd:MovieClip; 
const N_ENEMIES:uint = 6; 
var span:uint = stage.stageWidth/N_ENEMIES; 
for (var i:int=0; i < N_ENEMIES; i++) 
{ 
    bd = new bdenemy(); 
    enemy1[i] = bd; 
    addChild(bd); 
    bd.x = i * span + Math.random() * span; 
    bd.y = 50; 
} 

在那里,每个敌人在其范围内都会有一个随机位置。

+0

非常感谢你,这个想法正是我想到的产卵。 – Chivkins 2013-05-02 11:52:43