持久性Flash Clip

时间:2012-03-09 19:19:17

标签: javascript jquery html flash html5

我正在开发一个可以容纳相当大的Flash游戏的网站。问题在于,当某人正在玩游戏然后转到另一个页面时,他必须在相同的浏览会话中返回几秒钟/几分钟后重新加载Flash游戏。当然资产是缓存的,但加载所有内容仍需要几秒钟。

所以我试图找出解决这个问题的最佳方法(除了让Flash开发人员改进游戏加载时间)。我想出了以下内容:

创建一个相当空的页面,其中包含一些javascript和2个iframe,其中一个是网站,另一个是加载了Flash游戏的网站。现在,父页面上的javascript用于在浏览网站和玩Flash游戏之间切换。从用户的角度来看,他们在常规网站中(即,他们完全忘记了它在iframe中加载的事实)。

这仍然会在Flash游戏的重叠对话框方面带来一些问题,但我可以通过在父母中打开它们来解决这些问题。

我唯一担心的是,这感觉不对,感觉就像是在解决这个问题,我担心在某些时候它会在我的脸上爆炸。

所以2个问题

  • 你对我的方法有什么看法?预见除了上述问题之外的任何问题(z-index)?
  • 有没有更好的方法来解决这个问题?当访问者访问网站时,我肯定不是第一个想要闪存片段的人。

由于

1 个答案:

答案 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事件来创建提示。