我有一个奇怪的问题。我正在构建一个简单的直升机游戏(旧式 - 点击向上,避开障碍物)。我的问题是障碍产生,但没有正确定位,然后他们不会移动。我正在尝试使用jQuery的css()
来移动它们 - css
方法在其他任何方面都能正常工作,但与top
和left
一起使用时却没有。
问题的功能(产生并移动障碍物):
game.background.generateObs = function() {
var top = Math.floor(Math.random()*game.canvas.height);
var left = game.canvas.width-10;
var $obs = $("<div></div>")
$obs.addClass("obs").appendTo("#canvas");
$obs.css({
background: "black",
position: "absolute",
height: game.obstacle.height,
width: game.obstacle.width,
});
$obs.css("top", $("#canvas").offset().top + top )
.css("left",$("#canvas").offset().left + left);
game.obstacle.width = Math.floor(Math.random()*200);
if(game.gameState=="running") {
setTimeout("game.background.generateObs()",obsInterval);
}
else {
return;
}
}
game.background.moveObs = function() {
var currentPos = $("#canvas div.obs").css("left");
var newPos = currentPos - game.obstacle.frameWidth;
$("#canvas div.obs").css("left",newPos);
if(game.gameState=="running") {
setTimeout("game.background.moveObs()",interval);
}
else {
return;
}
}
另一件事是jsFiddle现在告诉我game
未定义,当我在开始时定义它时。
谁能告诉我我做错了什么?这是fiddle。
答案 0 :(得分:1)
$("#canvas div.obs").css("left")
正在您的小提琴中返回auto
,而不是数字。
尝试使用.offset()。left。
此外,您应该像这样更改setTimeout
来电:
setTimeout(game.background.moveObs,interval);