ActionScript 3(AS3)如何挑选随机数组?

时间:2014-09-10 18:41:14

标签: arrays actionscript-3 flash random

我遇到了问题,我不知道如何选择随机阵列。

var enemies:Array;

public function Main() {
enTimer = new Timer(1000);
enTimer.addEventListener("timer", createEnemy);
enTimer.start();
}

private function Enemy1():void {
var enemy1 = new Enemy1();
enemies.push(enemy1);
}

private function Enemy2():void {
var enemy2 = new Enemy2();
enemies.push(enemy2);
}

public function createEnemy():void {
//here is the problem how to pick up a random enemy ??
var EN = enemies[math.round(Math.random() * 2)];

stage.addChild(EN)
}

在此之后发生错误:

  

将Array类型的值隐式强制转换为不相关的类型   flash.display使用:。的DisplayObject

1 个答案:

答案 0 :(得分:4)

你的代码遇到了一些问题。

对于初学者,您要定义两个函数Enemy1Enemy2,但您还有两个名为Enemy1Enemy2的类。我会避免将函数和类调用为同名,因为它会让人感到困惑。

此外,您收到错误的原因是:

  

将类型Array的值隐式强制转换为不相关的类型flash.display:DisplayObject。

是因为您的Enemy1Enemy2类没有扩展DisplayObject类,只能将类型为DisplayObject的对象添加到舞台中。您的Enemy1Enemy2类继承的对象是什么?

对于继承来说,你的敌人对象类应该看起来像这样,以确保它们成为DisplayObject类型:

package {
    import flash.display.MovieClip;

    public class Enemy1 extends MovieClip {

        public function Enemy1() {

        }
    }
}

package {
    import flash.display.Sprite;

    public class Enemy1 extends Sprite {

        public function Enemy1() {

        }
    }
}

MovieClipSprite是属于DisplayObject系列类的对象的两个示例。