Я сделал фазерную игру, которую нужно поместить в рамку на веб-сайте. Если во время игры игрок нажимает в любом месте на веб-сайте, у меня есть функция, которая показывает 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
, чтобы вместо него использовать setTimeOut, здесь :
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;
}
Это тоже не работает; предупреждение отображается сразу. Я что-то упустил?