我遇到了问题,我不知道如何选择随机阵列。
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
答案 0 :(得分:4)
你的代码遇到了一些问题。
对于初学者,您要定义两个函数Enemy1
和Enemy2
,但您还有两个名为Enemy1
和Enemy2
的类。我会避免将函数和类调用为同名,因为它会让人感到困惑。
此外,您收到错误的原因是:
将类型Array的值隐式强制转换为不相关的类型flash.display:DisplayObject。
是因为您的Enemy1
或Enemy2
类没有扩展DisplayObject
类,只能将类型为DisplayObject
的对象添加到舞台中。您的Enemy1
和Enemy2
类继承的对象是什么?
对于继承来说,你的敌人对象类应该看起来像这样,以确保它们成为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() {
}
}
}
MovieClip
和Sprite
是属于DisplayObject
系列类的对象的两个示例。