Latest News

Home » FLASH與XML運用 » (使用FLASH+XML構建)簡單易更新網站

(使用FLASH+XML構建)簡單易更新網站

本文是一篇基於XML的FLASH網站製作教學,利用XML最基本的語系描述模式,加上FLASH製作的動態介面,能快速、簡便的開發FLASH網站,最重要是以後再更新FLASH網站時就非常方便,只許修改一下XML檔案即可。
如果想開發一個不支援資料庫空間上的的FLASH網站,或是說資料量太小,使用資料庫顯得太笨拙的話,使用XML將是最方便的方法。

本案例的目的是想用FLASH製作一個設計作品集(portfilio),就是個人首頁及設計公司中常用的那種工作展示。
由於天天工作,每隔幾天總會有些新作品可以放進作品集中,總不能隔三差五的去修改FLASH源檔案再輸出吧,用資料庫做這麼小的資料存取又顯得太笨拙,這個時候就得用到XML了,不需要資料庫,不需要空間支援,只要有FLASH和XMl檔案即可……。
先看看簡單資料表設計:
欄位     內容
name     設計作品名稱
src     設計作品的連結
intro     簡單描述
cate     作品所屬分類(網站/動畫/遊戲/多媒體..)

這樣一個資料庫,加個主鍵ID,有點像資料庫表 ,不過現在不能使用資料庫,必須以XML的模式來記錄這些資料,那麼我們再建立一個data.xml檔案,並寫入一個類似於此的資料描述結構

<第一段代碼>代碼複製框
//第一段代碼START <?xml version='1.0' encoding='UTF-8'?> <data> <web> <project name="SONYERICSSON T630 PROMOTION" src="sony.swf" intro="這是我今年的項目"/> <project name="MATRIX" src="matrix.swf" intro="密訓基地"/> <project name="PHILIPS TECH STATION" src="philips.swf" intro="科技新知"/> </web> <animation> <project name="MTONE GAME" src="mtone.swf" intro="這是個原作品了"/> </animation> <game> <project name="MIONICA GAMES" src="mionica.swf" intro=""/> <project name="EC ONLINE GAME" src="ec.swf" intro="線上遊戲"/> </game> </data> //第一段代碼END
[Ctrl+A 全部選取 然後複製]

這裡有幾個小問題:
首先,我使用的是 encoding='UTF-8',表示資料編碼模式是UTF-8,採用此模式的主要好處是便於在FLASH中讀取資料,並且在任何語系平台(如日文或其它國家操作系統)上,都能正存的顯示出我的中文字或其它文字。
那當然,也可以採用encoding='big5'的中文編碼模式,不過那樣的話,FLASH中就得加上語法來標示一下了。

由於XML是一種樹狀的資料結構,所以他的語法模式與我們傳統的資料表不一樣,我們的XML檔案中定義了<web>…</web>及<game>..</game>這樣的標示,表示的是我在前面資料表設計中的cate分類,在此標識塊中的部分,即為屬於這一分類的項目。
然後再在<web>…</web>這樣的塊中定義每一條記錄,如

<project name="EC ONLINE GAME" src="ec.swf" intro="線上遊戲"/>

一條資料的內容。

好了,現在看看FLASH介面的準備情況

OK!介面上的內容基本上如此了,如果需要更多功能,就自己再增加各種MC之類的了
我們在FLASH的第一幀寫上關鍵的語法部分

<第二段代碼>代碼複製框
//第二段代碼START stop(); //將data.xml檔案加載 infoDefault = ""; showSrc = ""; nowBtnName = "no"; nowNum = 0; xmlObj = new XML(); xmlObj.ignoreWhite = true; xmlObj.load("data.xml"); //XML檔案所在位址 xmlObj.onLoad = function(success) { if (success) { trace("XML加載完成!"); parseXML(); //分析XML檔案的函數 } else { trace("XML加載失敗!"); } }; //建立三個陣列以便載入XML中的資料 arr_web = new Array(); arr_animation = new Array(); arr_game = new Array(); //分析XML檔案 function parseXML() { //分別將web,animation,game的資料,裝入arr_web,arr_animation,arr_game三個陣列 web = xmlObj.firstChild.childNodes[0].childNodes; for (var i = 0; i<web.length; i++) { arr_web = new Object(); arr_web.info = web.attributes.name; arr_web.src = web.attributes.src; } animation = xmlObj.firstChild.childNodes[1].childNodes; for (var i = 0; ianimation.length; i++) { arr_animation = new Object(); arr_animation.info = animation.attributes.name; arr_animation.src = animation.attributes.src; } game = xmlObj.firstChild.childNodes[2].childNodes; for (var i = 0; igame.length; i++) { arr_game = new Object(); arr_game.info = game.attributes.name; arr_game.src = game.attributes.src; } //處理完畢,跳入顯示頁 gotoAndPlay(2); } //顯示圖示函數,點擊介面上的一個分類,通過此函數將分類下的內容作為圖示繪製在畫面中 function showIcon(cate) { nowNum = eval("arr_"+_root.currCate).length; if (nowNum != 0) { //清除上一組圖示 clearIco(nowNum); } fileIconX = 435; fileIconY = 150; //—此部分放進MC中 for (var i = 0; ieval("arr_"+cate).length; i++) { fileIcon.duplicateMovieClip("ico"+i, i); temp = eval("ico"+i); temp._x = fileIconX; temp._y = fileIconY; temp_name = eval("arr_"+cate); temp.vari = temp_name.info; temp.src = temp_name.src; //設定每個圖 標的RollOver,RollOut,及Release事件 temp.onRollOver = function() { //RollOver時,將此圖示表示的項目名稱顯示在文字方塊中 proinfo.text = this.vari; }; temp.onRollOut = function() { proinfo.text = infoDefault; }; temp.onPress = function() { //按下按鈕,在左邊將此項目的swf檔案loadmovie進來 infoDefault = this.vari; showSrc = this.src; loadContent.loadMovie(showSrc); }; fileIconX += 27; //設定每個圖示的位置,超過8個,換一行畫圖示 if (i%9==8) { fileIconX = 435; fileIconY += 28; } } } //清除上一組圖示的函數 function clearIco(nowNum) { for (var i = 0; i=nowNum; i++) { eval("ico"+i).removeMovieClip(); } } //第二段代碼END
[Ctrl+A 全部選取 然後複製]

OK,功能的代碼都編寫完成了,現在將他應用到我們的三個分類按鈕web,animation,game上面
在web按鈕的action中寫上:

<第三段代碼>代碼複製框
//第三段代碼START on (release) { showIcon("web"); _root.currCate="WEB"; } //第三段代碼END
[Ctrl+A 全部選取 然後複製]

以此類推寫出其它2個按鈕的release事件。

到此為止我們就設定完整個FLASH了,可以測試一下看是否能把XML檔案加載,並轉換成相同數量的圖示按鈕顯示出來,使用者點擊相應的圖示,就能將此作品的關聯swf檔案loadmovie進場景中瀏覽了。

——————————————————————————–
【文章標題】: (使用FLASH+XML構建)簡單易更新網站
【文章作者】: Flash 動畫製作教學密訓基地
【作者信箱】: ster168ster@gmail.com
【作者首頁】: http://por.tw/flash/
【Flash 動畫製作教學課程】: http://por.tw/flash/new-E_learning/index.php
【基地主機】: http://goto1688.com/flash/
【版權聲明】: (原創)Flash 動畫製作教學密訓基地,轉載必須保留完整標頭。刪除者依法追究!
——————————————————————————–
以後如果要增加web分類下的新作品,就可以直接在xml中加一條資料就行,flash檔案本身就可以不做任何修改了,應該說相當方便了。
XML的資料描述功能在此發揮了最大的作業,他自訂標示,樹狀的資料組織形式直接能被flash作為XMl物件進行讀取,相當方便易用。
不過flash目前還不支援直接修改xml檔案(如果要實現通過flash修改xml檔案,必須通過別的asp或php類似腳本),否則的就可以直接用flash做基於xml的小型資料庫網站或應用程式了。

本例的源檔案中並沒有完成全部的功能,只做到XML讀入並根據XML的內容排序圖示及文字
其它XML中的欄位及讀詳細作品的功能大家可以根據此例內容自行開發,相信一定能做出更好的FLASH+XML動態網站。

——————————————————————————–
【Flash 動畫製作】你在摸索如何製作 Flash 動畫及發佈到網站嗎?有【技術顧問服務】可諮詢嗎?
當問題無法解決你要發很多時間處理(或許永遠找出答案)那就是自己摸索 Flash 動畫製作痛苦的開始!
購買【Flash動畫製作教學】DVD課程,就可獲得【Flash 動畫製作】技術【顧問諮詢服務】!

 Flash Design

About

發佈留言