我正在开发一个可以容纳相当大的Flash游戏的网站。问题在于,当某人正在玩游戏然后转到另一个页面时,他必须在相同的浏览会话中返回几秒钟/几分钟后重新加载Flash游戏。当然资产是缓存的,但加载所有内容仍需要几秒钟。
所以我试图找出解决这个问题的最佳方法(除了让Flash开发人员改进游戏加载时间)。我想出了以下内容:
创建一个相当空的页面,其中包含一些javascript和2个iframe,其中一个是网站,另一个是加载了Flash游戏的网站。现在,父页面上的javascript用于在浏览网站和玩Flash游戏之间切换。从用户的角度来看,他们在常规网站中(即,他们完全忘记了它在iframe中加载的事实)。
这仍然会在Flash游戏的重叠对话框方面带来一些问题,但我可以通过在父母中打开它们来解决这些问题。
我唯一担心的是,这感觉不对,感觉就像是在解决这个问题,我担心在某些时候它会在我的脸上爆炸。
所以2个问题
由于
答案 0 :(得分:1)
如果您有一个人们可以自由离开的页面(即互联网),那么您将遇到此问题。如果它是一个他们需要轻弹的页面,那么最好是一个单独的标签/窗口 - 一个iframe会给你带来比必要更多的麻烦!
您可以在Flash页面上使用javascript拦截用户关闭/重定向,并发出警告用户他们需要重新加载的提示等。在线flash编辑器中我使用了这种技术 - 每次都是用户做了一些需要保存的东西,我使用了ExternalInterface:
public final class ExternalJS
{
public static var callJS:Boolean = true;
public static var jsFunc:String = 'setSaved';
public static function setSaved(isSaved:Boolean):void
{
if(callJS && ExternalInterface.available)
{
ExternalInterface.call(jsFunc,isSaved);
}
}
}
有了这个,页面上有一个相应的JS函数:
var saved = true;
function setSaved(isSaved){saved = isSaved;}
window.onbeforeunload = function()
{
if(!saved)
{
return "Leaving this page will require it to be reloaded if you visit again, are you sure you wish to navigate away?";
}
}
这将使用此文本和标准ok / cancel选项创建提示。如果没有重新设计您的网站,这将是我最好的选择。
希望这有帮助。
PS出于您的目的,您可能不需要Flash代码,甚至Javascript中的条件,只需使用onbeforeunload事件来创建提示。