[英]JavaScript, Phaser: Calling a function with setTimeout - delay doesn't work
我制作了一个移相器游戏,该游戏将被放置在网站的框架中。 如果玩家在游戏进行时点击网站上的任何其他地方,我有一个显示 HTML 元素的功能来警告玩家,这里:
function showOnLoseFocus()
{
if( window.globalGame !== null && window.globalGame !== undefined )
{
document.getElementById('container_refocusWarning').style.display = 'block';
document.getElementById('refocusTitle').innerHTML = ((getHtmlTextFromXML('restore_default') === '' ? 'Game Paused' : getHtmlTextFromXML('restore_default')));
document.getElementById('refocusResume').innerHTML = ((getHtmlTextFromXML('restore_tap') === '' ? '(Tap to resume game)' : getHtmlTextFromXML('restore_tap')));
}
}
以上工作得很好。
现在,我正在尝试创建一个类似的函数adLoseFocus
,旨在通知播放器广告已完成,但在显示之前有 3 秒的延迟。 Phaser 本身有一个内置的延迟功能,我在这里尝试过:
this.game.time.events.add(3000, adLoseFocus);
不幸的是,这似乎不起作用,所以我已经尝试修改adLoseFocus
以使用adLoseFocus
代替,这里:
function adLoseFocus( bIsMuted, p_callback, bIsAd = true)
{
adRegainMute = bIsMuted;
adActive = true;
window.globalGame.sound.mute = true;
if( window.globalGame !== null && window.globalGame !== undefined && bIsAd)
{
setTimeout(function() {
document.getElementById('container_refocusWarning').style.display = 'block';
document.getElementById('refocusTitle').innerHTML = getHtmlTextFromXML('restore_ad');
document.getElementById('refocusResume').innerHTML = getHtmlTextFromXML('restore_tap');
}, 3000);
}
fAdCallback = p_callback;
}
这也行不通; 立即显示警告。 我错过了什么吗?
我的错误,显然错误出在函数调用中。 这样做:
adLoseFocus(true, callbackFunction)
由于某种原因, bIsAd
检查失败,即使它被设置为真正的默认值。 这样做:
adLoseFocus(true, callbackFunction, true)
确保它有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.