2012-03-09 26 views
0

我正在开发一个网站,将举行一个相当大的Flash游戏。问题在于,当有人在玩游戏然后转到另一个页面时,当他在相同的浏览会话中返回几秒/分钟后,他将不得不重新加载Flash游戏。当然资产被缓存了,但所有东西都需要加载几秒钟。持久闪存夹

所以我试图找出最好的方法来解决这个问题(除了获得flash dev来提高游戏加载时间)。我想出了以下几点:

创建一个相当空的页面,其中包含一些javascript和2个iframe,其中一个是网站,另一个是加载Flash游戏的网站。现在,父页面上的JavaScript用于在浏览网站和玩Flash游戏之间切换。从用户的角度来看,他们在一个普通的网站(即他们完全没有意识到它被加载到iframe中)。

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

我唯一担心的是,这只是感觉不对,感觉就像我在解决问题的方法一样,我恐怕会在某些时候炸毁我的脸。

所以2个问题

  • 你对我的做法的感觉?预见除了所提到的问题之外的任何问题(z-index)?
  • 有没有更好的方法去做这件事?当然,我不是第一个想要一个Flash剪辑坚持只要访问者在网站上的人。

感谢

回答

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?"; 
      } 
     } 

这将创建一个带有这个文本的提示,和标准的确定/取消选项。在重新设计您的网站的时候,这是最好的选择。

希望这会有所帮助。

PS为了您的目的,您可能不需要Flash代码,甚至不需要JavaScript中的条件,只需使用onbeforeunload事件来创建提示。