flash與web開發語言的交互

    我們知道flash的交互性是很強大的,而且可以做出非常漂亮的效果.同時我們也看到有些網站是全flash的,並且不僅是界面,連顯示的數據都是動態生成的,也就是說flash可以與後端的web開發語言進行交互操作,這是怎麼做到的呢?那麼現在就跟隨我來做一個簡單的例子.
    flash與後端web開發語言交互的關鍵在於flash裏的loadVariables函數,我們知道flash所使用的語言ActionScript是非常強大的,利用這個函數我們就可以實現與web開發語言的交互.
    首先我們新建一個flash文件,插入一個新元件(Ctrl+F8),隨便起一個名稱,比如叫first,將行爲設置爲影片剪輯,然後確定.
    在這個影片剪輯中,我們新建一個層,可以將它命名爲action,這樣我們現在就有兩個層了,你可以將原來那個層命名爲first,action層專門來寫腳本,first層來做界面.
    插入三個關鍵幀,在第一個關鍵幀的first層做一個loading的界面,它的效果就由你來自由發揮了,在這裏我們爲了簡單起見,就寫上Loading字樣,表示正在讀取.然後在這個關鍵幀的action層寫下如下代碼:

_global.System.useCodepage = true;
if(startup != "OK")
{
 startup = "OK";
 loadVariables("count.php",this);
}

第一行表示使用Unicode,這樣我們的中文才能顯示出來,否則就會顯示亂碼.
if這行代表判斷startup這個變量的值是否等於OK,在這裏startup當然不等於OK,因此就進入了分支代碼,將startup設置爲OK,然後調用關鍵的函數loadVariables.
    這個函數是用來收發與後端web編程語言所交互的信息的.第一個參數代表訪問哪個文件,第二個參數代表收發哪個電影片斷,在這裏是自己本身,所以我們設置爲this.在這個例子裏並沒有出現第三個參數,因爲我們只想接收信息,第三個參數是用來設置發送數據的方式,就像web程序一樣,它的值爲"GET"或"POST",也就是說我們可以使用GET方式或者表單的POST方式來發送數據.
    現在進入了第二幀,在first層做任何界面,在action層裏寫上以下代碼:

if(load == "end")
{
 gotoAndPlay(3);
}
else
{
 gotoAndPlay(1);
}

第一行也是來判斷的,load變量是從count.php接收來的,它的值end就也是count.php所賦予的,當然你可以改成其他值,在這裏它是用來判斷是否從count.php接收到了信息.如果接收到了就播放第三幀來顯示,如果沒有就回到第一幀繼續顯示loading.
    第三幀的action層非常簡單,只需一個stop()函數就可以了.而它的first層就需要擔當顯示接收到的數據的責任.在這裏我們從工具欄中選擇文本工具,在工作區拖出一個文本筐,然後打開它的屬性面板,在一個下拉列表中選擇動態文本,然後在變量那個筐中輸入變量名,這個變量名就是從count.php中接收來的,它的值爲要顯示的數據,我們這裏把它設置爲total.好了,現在flash部分就做好了.下面我們來用一種web開發語言來編寫後端的代碼,在這裏我們使用的是php,其他的編程語言像asp,jsp等都可以來做,一會我們會來解釋.
    寫一個php文件,文件名稱當然是count.php.這個文件的業務邏輯你可以自己定義,只要在最後輸出的時候按照一定的格式就可以讓flash接收到,格式如下:

var1=value1&var2=varlue2&

大家看出來這個格式了吧,就是URL裏的查詢字符串的格式,var1和var2是變量名,等號後面的是它的值,每個變量中間使用&符號分隔.這樣我們的php文件可以這樣寫:

echo "total=".$cout."&load=end&";

其中$cout變量是此php文件的業務邏輯部分計算出來的,業務邏輯你可以自己定義.後面的load=end就是剛纔flash第二幀所寫的.total變量就是第三幀那個動態文本筐所輸入的.

    其他的web開發語言也是這樣,只要按照格式數據即可,比如在JSP中可以寫成:

out.print("total="+cout+"&load=end&");

    現在我們來測試一下這個程序,將flash發佈,輸出爲Flash和網頁,這樣就會生成出.html和.swf文件,把他們和php文件放到web服務器的目錄下,然後在瀏覽器中輸入:

http://你的服務器地址:端口號/你的html文件名稱

    現在看到效果了嗎?是不是動態的顯示出數據了.
    注意:loadVariables函數好像是從flash5開始有的,所以我們在做的時候要注意版本.現在flash的新版本對與後端數據的訪問做了加強,新添加了許多新的函數和類,大家可以自行研究一下.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章