我目前正在制作一款游戏,其中方块掉落,您必须避免它们。我有一些jQuery代码,可将块追加到称为游戏的div
上。
我在选择生成的每个div
并使它们向下移动而没有单击时遇到麻烦。 Here is the GitHub link,这里是example
这是jQuery代码(部分代码)
function spawn_block(){
$spawned_block = $("<div class='block'></div>")
$game.append($spawned_block); //add div with class block to #game div
var left=getRandomInt(0, $game.width()-$spawned_block.width()); //gets a random value from left of screen where div can appear
var top=getRandomInt(0, $game.height()-$spawned_block.height()); //not useful unless you don't want the div to appear at the top
//adds a random position and color to spawned_block
$spawned_block.css({
"left": left,
"background-color": getRandomColor()
});
//if you want a random position from top add "top" : top,
};
if($spawned_block.position.top < $game.position.top + $game.height ) {
$spawned_block.css("top", "+=25px");
}
这最后一段代码是我在函数末尾添加的,我在做什么错呢?
最佳答案
不知道这是不是正在发生的事情,只是最近添加的div
是否向下移动?如果您执行以下操作,则可能会有所帮助:
$("#game .block").each(function(index){
if($(this).position.top < $game.position.top + $game.height ) {
$(this).css("top", "+=25px");
}
});
这遍历id
.block
元素内的每个#game
,并在其上运行if
语句。另一件事可能是您的问题(恐怕您的问题还不够清楚,我无法告诉您)是,您仅在事件发生时(例如单击或阻止)运行该函数将所有内容向下移动添加)。也许这样的事情可能对您有用:
function anim() {
$("#game .block").each(function(index){
if($(this).position.top < $game.position.top + $game.height ) {
$(this).css("top", "+=25px");
}
});
window.requestAnimationFrame(anim);
}
window.requestAnimationFrame(anim);
这告诉浏览器(通过
window.requestAnimationFrame(anim);
行)在下一帧运行anim()
函数,该函数将块向下移动。您可以阅读有关requestAnimationFrame()
here的更多信息。祝好运!