2012-03-09 30 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事件來創建提示。