这个游戏,2048,太上瘾了。我需要自动播放它。我的setInterval有问题,因为它只启动我的函数一次。谢谢你的帮助。
var game = $('.game-container');
function fire(el)
{
var moves = [37,38,39,40]
var key = moves[Math.floor(Math.random()*moves.length)];
if(document.createEventObject)
{
var eventObj = document.createEventObject();
eventObj.keyCode = key;
el.fireEvent("onkeydown", eventObj);
}else if(document.createEvent)
{
var eventObj = document.createEvent("Events");
eventObj.initEvent("keydown", true, true);
eventObj.which = key;
el.dispatchEvent(eventObj);
}
}
window.setInterval(fire(game),100);它似乎只运行了一次函数,然后我在控制台中得到:Application Cache NoUpdate event。
发布于 2014-04-18 20:41:15
setInterval()接受一个字符串或函数变量:
// string syntax (NOT RECOMMENDED)
// passes "fire(game)" to eval() every 100ms.
// executes in the global scope, which is a potential scope change. thus,
// has the potential to "lose" its reference to your `fire` and `game` variables.
setInterval("fire(game)", 100);
// function-passing syntax (PREFERRED)
// executes the [anonymous] function every 100ms.
// holds onto the in-scope `fire` and `game` objects.
setInterval(function() { fire(game); }, 100);这样做:
setInterval(fire(game), 100);..。将调用fire(game)并将返回值传递给setInterval。如果fire(game)返回一个function,这将是有意义的。(或者是string,它可能是eval()d,但我建议你不要这么做!)
发布于 2014-04-18 20:39:40
在最后一行中调用fire,而不是实际设置间隔。
fire(game)不返回任何东西,所以它不会传递给setInterval任何回调。
发布于 2014-04-18 20:40:49
这个
fire(game)在setInterval中,实际上将调用该函数,setInterval将永远不会执行任何函数。
试一试
setInterval(function(){fire(game)},100);https://stackoverflow.com/questions/23161927
复制相似问题