ActionScript 3.0中的Spawn Enemies

时间:2017-11-05 12:18:53

标签: actionscript-3 flash actionscript

在我的脑海中出现了一些问题,在我的游戏中,我想要实现库中的敌人并将它们放在舞台上。所以我创建了一个EnemySpawner类,并将该类中的一个实例放到舞台上。 (从库中拖放并为其指定实例名称)。所以这里是EnemySpawner类的代码:

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{

    }

}

}

所以这里的问题是,我想从库中随机加载敌人并在舞台上实例化,设计环境是这样的:

图书馆里有不同的敌人动画片段和同样的blass类:

pic from  lib

我不想为每个敌人分配一个新课程,例如我不想将EnemyA Class分配给Enemy1 MovieClip Object和EnemyB Class分配给Enemy2 MovieClip。我希望图书馆里的All Enemy MovieClip共享同一类Enemy。所以但是使用它,实例化是一项艰巨的任务,我不知道如何使用这种方法实例化敌人?

我知道如果每个敌人都有单独的课,我可以这样做:

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

提前致谢。

1 个答案:

答案 0 :(得分: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;