我有一个小型 RTS 游戏,你可以在其中攻击怪物。我希望将其设置为当游戏加载或启动时,strike()
函数将在 3 秒后触发。然而,当我运行下面的代码时,我收到一个类型错误:“strike()”不是一个函数。如果它不是一个函数,那么它是什么?
如果您想知道player.cc
的含义,它代表当前 Angular 色。其余的只是指我游戏中的平衡表。
dom.el("strike").onclick = function strike() {
HitCalc(player.cc, monster.cc);
actor.expCounter(player.cc);
actor.balanceCounter(player.cc, monster.cc);
};
setTimeout(strike(), 3000);
可能有帮助的其他代码:
dom = {
el: function (id){
return document.getElementById(id);
},
HTML:
<button id="strike" type="button" class="buttons">Strike</button>
最佳答案
虽然您认为分配给事件处理程序的函数具有名称仍然在当前作用域中提升和声明,但您在这部分上是错误的:它仍然是分配给属性的函数,例如任何匿名内联函数。
您需要的是:
function strike() {
HitCalc(player.cc, monster.cc);
actor.expCounter(player.cc);
actor.balanceCounter(player.cc, monster.cc);
};
dom.el("strike").onclick = strike;
// Note that setTimeout expects a reference to the function rather than
// a function call!!
setTimeout(strike, 3000);
关于javascript - JS : Your function is not a function! 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170335/