我开始使用 javascript/jQuery,因此正在构建植物大战僵尸。我为敌人创建了一个对象,并为每个显示该代码的敌人创建了一个引用:这是对象:
var Enemy = function(row, num) {
'use strict';
this.row = row;
this.number = num;
this.move_interval;
this.html_element;
};
Enemy.prototype.create = function() {
this.html_element = $('<div class="enemy '+this.row+' full" style="left:1140px;top: '+$('tr.row_'+this.row).position().top+'px"></div>').prependTo('.container');
return this;
};
Enemy.prototype.die = function() {
clearInterval(this.move_interval);
this.html_element.remove();
return this;
};
Enemy.prototype.move = function() {
this.move_interval = setInterval(function() {moveEnemy(this.number)}, 2000);
return this;
};
这是创建敌人的时间间隔(i 被定义为全局变量“var i = 0;”):
enemy_interval = setInterval("addEnemy(i++)", 9000)}
这是创建敌人的函数(随机的东西是因为我有四行敌人可以在上面生成,这也是对象中的属性行的用途):
function addEnemy(num) {
if (num < 5) {
switch (getRandom(1,4)) {
case 1:
enemies[num] = new Enemy("one", num);
enemies[num].create().move();
break;
case 2:
enemies[num] = new Enemy("two", num)
enemies[num].create().move();
break;
case 3:
enemies[num] = new Enemy("three", num)
enemies[num].create().move();
break;
case 4:
enemies[num] = new Enemy("four", num)
enemies[num].create().move();
break;
default:
break;
}
}
}
这是错误出现的地方:
function moveEnemy(number) {
enemies[number].html_element.animate({left: "-=150"}, 2000, "linear");
}
我尝试了几种方法,方法是编辑 moveEnemy 函数以获取属性“html_element”作为参数并这样做:
function moveEnemy(obj) {
obj.animate({left: "-=150"}, 2000, "linear");
}
我试图把它写成敌人[number][html_element],因为我读到这实际上是获取属性的方式,但它并没有很好地工作。它总是告诉我参数('obj'或上面的'number'是未定义的)。
有人能看到那个错误吗?丁: