我正在尝试制作一个横向滚动射击游戏,并使用代码而不是放置来生成所有敌人,我一直遇到:
TypeError:错误#1007:尝试在非构造函数上进行实例化。
相关代码:
tanktimer++;
var n:MovieClip;
var lv1arr:Array = [24,120,144,264,288,384,408,432,480];
var lv1Tarr:Array = ['Tank(1)','Tank(1)','Tank(2)','Tank(1)','Tank(2)','Tank(3)','Tank(1)','Tank(2)','Tank(3)'];
if(tanktimer == lv1arr[we])
{
trace('work darn you!');
n = new lv1Tarr[we];
n.x = 700;
n.y = 550;
addChild(n);
trace('build');
we++;
}
var 'we' 和 tanktimer 一样在顶部定义为 Number=0。
我认为应该发生的是 tanktimer 从 0 计数到 24,然后它将等于 lv1arr 中的第一个值,此时它将构建 lv1Tarr 中的第一个项目。
我很确定问题是:
n = new lv1Tarr[we];
随着代码到达那里,然后给出错误并且不生成坦克。但是如果我删除 lv1Tarr[we] 并用 Tank(1) 替换它,它工作得很好,所以很明显 Flash 不希望我以这种方式使用数组。