元素拒绝移动 - jQuery .css

时间:2014-05-13 16:29:07

标签: javascript jquery html

我有一个奇怪的问题。我正在构建一个简单的直升机游戏(旧式 - 点击向上,避开障碍物)。我的问题是障碍产生,但没有正确定位,然后他们不会移动。我正在尝试使用jQuery的css()来移动它们 - css方法在其他任何方面都能正常工作,但与topleft一起使用时却没有。

问题的功能(产生并移动障碍物):

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

1 个答案:

答案 0 :(得分:1)

$("#canvas div.obs").css("left")正在您的小提琴中返回auto,而不是数字。

尝试使用.offset()。left。


此外,您应该像这样更改setTimeout来电:

setTimeout(game.background.moveObs,interval);