在 ActionScript 3.0 中生成敌人
Spawn Enemies in ActionScript 3.0
我脑子里出了点问题,在我的游戏中,我想在库中实例化敌人并将它们放在舞台上。所以我创建了一个 EnemySpawner class 并且我将那个 class 中的一个实例放到了舞台上。 (从库中拖放并给它一个实例名称)。所以这是 EnemySpawner class:
的代码
package scripts {
import flash.display.MovieClip;
public class EnemySpawner extends MovieClip {
var positions: Array = new Array(); // clockwise spawn positions
var enemies : Array = new Array();
var spwan:Boolean=false;
public function EnemySpawner() {
positions.push(MovieClip(root).rightPos);
positions.push(MovieClip(root).leftPos);
enemies.push("Enemy1");// here is the problem
}
public function tick(): void {
}
public function doSpwan():void{
}
}
}
所以这里的问题是,我想从库中随机加载敌人并在舞台上实例化它们,设计环境是这样的:
库中有不同的敌人电影片段具有相同的 blastclass:
我不想为每个敌人分配一个新的 class ,例如我不想将 EnemyA Class 分配给 Enemy1 MovieClip 对象,将 EnemyB Class 分配给 Enemy2电影剪辑。我希望库中的所有 Enemy MovieClip 共享相同的 class Enemy。所以但是使用这个,实例化是一项艰巨的任务,我不知道如何使用这种方法实例化敌人?
我知道如果我对每个敌人都有单独的 class 我可以这样做:
var e1 : Enemy1 = new Enemy1();
var e2 : Enemy2 = new Enemy2();
...
var e3 : Enemy3 = new Enemy3();
但我想做这样的事情:
//Pseudocode:
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
提前致谢。
实际上,这很容易。分配不同 类的敌人,然后
// List classes in this Array.
var Enemies:Array = [Enemy1, Enemy2, Enemy3];
// Get a random class from the list.
var anIndex:int = Math.random() * Enemies.length;
var EnemyClass:Class = Enemies[anIndex];
// Spawn a random enemy.
// You can have a common superclass, or just use MovieClip or Sprite they are subclassed from.
var anEnemy:MovieClip = new EnemyClass;
我脑子里出了点问题,在我的游戏中,我想在库中实例化敌人并将它们放在舞台上。所以我创建了一个 EnemySpawner class 并且我将那个 class 中的一个实例放到了舞台上。 (从库中拖放并给它一个实例名称)。所以这是 EnemySpawner class:
的代码package scripts {
import flash.display.MovieClip;
public class EnemySpawner extends MovieClip {
var positions: Array = new Array(); // clockwise spawn positions
var enemies : Array = new Array();
var spwan:Boolean=false;
public function EnemySpawner() {
positions.push(MovieClip(root).rightPos);
positions.push(MovieClip(root).leftPos);
enemies.push("Enemy1");// here is the problem
}
public function tick(): void {
}
public function doSpwan():void{
}
}
}
所以这里的问题是,我想从库中随机加载敌人并在舞台上实例化它们,设计环境是这样的:
库中有不同的敌人电影片段具有相同的 blastclass:
我不想为每个敌人分配一个新的 class ,例如我不想将 EnemyA Class 分配给 Enemy1 MovieClip 对象,将 EnemyB Class 分配给 Enemy2电影剪辑。我希望库中的所有 Enemy MovieClip 共享相同的 class Enemy。所以但是使用这个,实例化是一项艰巨的任务,我不知道如何使用这种方法实例化敌人?
我知道如果我对每个敌人都有单独的 class 我可以这样做:
var e1 : Enemy1 = new Enemy1();
var e2 : Enemy2 = new Enemy2();
...
var e3 : Enemy3 = new Enemy3();
但我想做这样的事情:
//Pseudocode:
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
//Instantiate form library (Name Of Enemy1); //base class is enemy 1
提前致谢。
实际上,这很容易。分配不同 类的敌人,然后
// List classes in this Array.
var Enemies:Array = [Enemy1, Enemy2, Enemy3];
// Get a random class from the list.
var anIndex:int = Math.random() * Enemies.length;
var EnemyClass:Class = Enemies[anIndex];
// Spawn a random enemy.
// You can have a common superclass, or just use MovieClip or Sprite they are subclassed from.
var anEnemy:MovieClip = new EnemyClass;