2011-12-22 60 views
0

我即將在Flash和AS3中建立一個網站,其中一些網頁將通過Flash創作程序給予內容,而其他網頁將通過as3動態生成(而不僅僅是頁面的內容,但新頁面本身將通過AS3添加)。我試圖找出一個通用的代碼架構來支持這一點。網站設計模式與AS3和閃光燈

想到的第一個解決方案是:讓所有的子顯示對象放置在容器影片剪輯中的任何單個頁面的內容。這樣我就可以在舞臺上爲每個頁面製作一個影片剪輯。首先想到的是,我可以通過將alpha設置爲none來禁止所有人訪問的頁面,禁止所有不是當前頁面的Movie-Clip的鼠標交互。但我不確定這是管理內存的最佳方式。另一種可能是在不使用時將這些影片剪輯移到舞臺邊界之外,但這可能會遭遇相同的內存問題。最後,我只需添加和刪除顯示對象,以便每次只有一個動畫片段處於舞臺上,但我如何保留構建在Flash創作程序中的頁面?我可以將所有這些存儲在AS3的某個位置,這樣我就可以將顯示的孩子添加回原始格式了嗎?

如果有人知道一些可能會解決這些問題的文章,或者解釋AS3/flash網頁的簡單設計模式,那就太好了。我敢肯定有人比我更聰明,但我不想重新發明輪子。

+1

小小的主題,或許對某些方面有用:看看GAIA框架。 – AsTheWormTurns 2011-12-23 07:55:08

+0

只要你知道,完全在Flash中製作網站是SEO自殺。搜索引擎無法解析Flash網站,並且用戶無法使用他們的後退按鈕(他們會想要)。 – 2011-12-23 15:02:58

+0

有一個網站的內容被推送到一個平行的HTML版本,所以這應該彌補SEO的不足之處。 – 2011-12-27 02:55:58

回答

1

我會將每個「頁面」導出到他們自己的類(從庫中),以及每個頁面的任何特定代碼的相應.as文件。然後製作一個名爲mainContent_mc的MovieClip,它將始終以舞臺上的佔位符形式存在。

如果要加載一個新的頁面調用,比如一個函數:

function loadPage(pageNumber:int):void { 
    //Remove any children of the content placeHolder 
    //TODO: Handle any other memory management here as well 
    while(mainContent_mc.numChildren > 0){  
     mainContent_mc.removeChildAt(0); 
    } 

    //Add the desired page 
    switch(pageNumber){ 
     case 0: 
      var p0:HomePage = new HomePage(); 
      mainContent_mc.addChild(p0); 
      break; 
     case 1: 
      var p1:AboutPage = new AboutPage(); 
      mainContent_mc.addChild(p1); 
      break; 
    } 
} 

當然,如果你的網頁是非常小的內存明智的,你可以用簡單的爲您所有的「頁面」設置.visible = false;獲得通過但我仍然會像上面提到的那樣組織他們。