2014-11-04 73 views
0

我正在为学校项目编程一个简单的游戏。这就像太空侵略者,但我不能在一次插入多个敌人......它只是显示我一个敌人,现在我得到一个错误,说“属性x没有找到字符串,没有默认值。”AS3向下射击游戏

我试图创建一个向量来创建多个敌人,但它不工作在所有...

这里是我的代码:

变量的敌人:

private var bird_1:MovieClip; 
    private var InimigoList:Vector.<MovieClip> = new Vector.<MovieClip>(); 
    private var NumInimigos:int = 10; 
    private var birdVelo:Number = 3; 

然后:

bird_1 = new MovieClip(textureAtlas.getTextures("bird"), 5); 
     bird_1.smoothing = "none"; 
     Starling.juggler.add(bird_1); 
     bird_1.visible = false; 
     addChild(bird_1); 

     for (var i:uint = 0; i < NumInimigos; i++) { 
     var Enemy:MovieClip = new MovieClip (textureAtlas.getTextures("bird"),12); 
     Enemy.smoothing = "none"; 
     Enemy.visible = false; 
     Enemy.x = i * 50 + Enemy.width; 
     InimigoList.push(Enemy); 
     Starling.juggler.add(Enemy); 
     addChild(Enemy); 

现在我想让多个敌人出现在舞台上。然后我做了这个:

for (var i:uint = 0; i < NumInimigos; i++) { 
      var newEnemy = InimigoList[i]; 
      newEnemy += birdVelo; 
      if (newEnemy.x > stage.stageWidth){ 
      newEnemy.x = 0; 
      } 
      } 

但它不工作......我只得到一个敌人,没有更多......你能帮我吗?谢谢!

+0

我觉得你的问题是'newEnemy + = birdVelo'应该是'newEnemy.x + = birdVelo'; – Karmacon 2014-11-04 01:07:14

回答

0

你是否在创造隐形的敌人?

Enemy.visible = false; 

你把所有的敌人都放在舞台的同一个区域吗?

for (var i:uint = 0; i < NumInimigos; i++) { 
      var newEnemy = InimigoList[i]; 
      newEnemy += birdVelo; 
      if (newEnemy.x > stage.stageWidth){ 
      newEnemy.x = 0; 
      } 
      } 

这是干什么的?

newEnemy += birdVelo; 

您是否尝试过直接从其Array位置引用对象?

InimigoList[i].x = newx; 
InimigoList[i].y = mewy;