我花了很多时间在这段代码上。它没有成功:(我有射击的船。我有外星人正在向船上移动!我想我的子弹得到一个外星人并从帆布中移除那个外星人(并且再次获得并移除所有外星人)我想到了坐标。我认为我必须将子弹的坐标与外星人的坐标进行比较。所以如果它们是相同的那么只需要制作黑色的外星人来帮助我实现"消失"然而,我试过了。它不起作用!有任何想法吗?任何帮助都会表示赞赏。谢谢。
JS
Alien.prototype.draw = function(context) {
if(this.x == 0) {
context.fillStyle = "red";
} else if(this.x == 1) {
context.fillStyle = "yellow";
} else {
context.fillStyle = "blue";
}
context.beginPath();
context.fillRect(this.posx, this.posy, 20 , 20);
context.fill();
}
var canvas = document.getElementById("screen");
context = canvas.getContext("2d");
if (canvas.getContext) {
//init the aliens array
var aliens = [];
for(var i = 0; i < 3; i++) {
for(var j = 0; j < 3; j++) {
aliens.push(new Alien(j, i));
}
}
HTML
<canvas id="screen" width="300" height="500"/>
答案 0 :(得分:0)
正如this(现已删除)问题已经回答:
您的setTimeout()
调用中出现错误,导致shoot()
方法无法调用。
不要使用括号作为setTimeout
的函数参数 - 这应该只是一个参考。当您使用括号时,您实际上正在执行shoot()
方法并将其结果提供给setTimeout()
。
试试这个,它可能会让你更进一步:
function shoot(){
context.fillStyle = "black";
context.fillRect(player.x, Y2--, 5,10);
context.fillStyle = "red";
context.fillRect(player.x, Y2, 5,10);
if (Y2>=0) {
timer=setTimeout(shoot, 1); /// no parenthesis here
}
else {
context.fillstyle="black";
// context.fillRect(X2, Y2, 5,10);
Y2=320;
// context.fillRect(X+23, Y2, 5,10);
}
}
如果这只能部分解决您的问题,请更新您的问题,了解您尝试实现的更多信息和详细信息。