元素拒绝移动- jQuery .css

Elements refuse to move - jQuery .css

本文关键字:jQuery css 移动 拒绝 元素      更新时间:2023-09-26

这里我有一个奇怪的问题。我正在创建一个简单的直升机游戏(老式的类型-点击上升,避免障碍)。我的问题是,障碍物产生,但没有正确的位置,然后他们不会移动。我试图用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是未定义的,当我在开始的时候定义它。

谁能告诉我我做错了什么?这是小提琴

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

尝试使用.offset()。离开。


此外,您应该像这样更改您的setTimeout调用:

setTimeout(game.background.moveObs,interval);