與Flash的第一次接觸
 
最近使用Flash撰寫一些程式,實在不是很會用,寫得很差,到處參考別人的文件,東拼西湊的,最後終於完成了一個小小的作品。這篇文章的目的用途是當做使用紀錄,供日後參考用的技術文件,畢竟人事健忘的動物。這次使用Flash的目的,是使用Flash提供的Web Service的能力,利用這個能力與SOAP Server連接並做資料的存取。而這篇文章將以一個極簡單的範例來說明如何透過Flash取得想要的資料。關於SOAP Server的製作請參考之前撰寫的"Pyhon的SOAP Library"這篇文章,這篇文章有教大家如何使用python這個程式語言實作一個RPC Server,提供其他程式作遠端呼叫。當然我也會在這篇文章中簡述RPC Server的製作,而我會使用不同的方式來架構RPC Server,與之前介紹使用Python 的 SOAP Library的用法有些不同,我將使用python內建的函式庫來實作該Server。
 
前言:
我們所使用的開發環境
    1. Flash 8.0 (30天試用版)
    2. Pyhton 2.3
參考資料
    1. http://www.adobe.com/devnet/flash/articles/webcam_motion_print.html (因為我撰寫的Flash程式會使用到WebCam,所以參考該網站中所提供的做法,但我所舉的簡單範例並沒有使用到WebCam,只是單純的Web Service的使用)
    2. http://blog.xuite.net/ben19770209/ASBeginner/5255724 (圖檔的資料處理)
    3. http://ria.richtechmedia.com/?p=204 (關於Flash與Web Service間的技術參考文件)

一、Flash的下載與安裝
 
當然Flash下載完你將會有30天的試用時間,當然30天的時間足夠讓我把東西給做完,如果你覺得Flash 8.0好用或許可以考慮購買,我沒有買,因為我所作的東西只是實驗性質。當你進入準備下載時,它會要求你輸入帳號與密碼,如下圖,如果沒有就申請一個吧。
 
 
當你入完帳號與密碼之後,你就可以下載到你所想要的東西
 
 
安裝Flash,當你執行了下載回來的檔案(Flash8-cht.exe)之後會出現下圖的畫面
 
 

請按確定,接著會進入下面的畫面,進行安裝的準備
 
 

接著你會看到下面的畫面
 
 

然後按下一步,你會看到下面的畫面
 
 

點選"我接受該授權合約中的條款",然後按下一步,你會看到下面的畫面
 
 

然後按下一步,看到下面畫面
 
 

按下一步,按安裝......,一直到最後按下完成,Flash終於裝好了。

二、Flash的程式設計

關於Flash的程式設計,有一部分是自己摸索的結果,一部分是參考Flash中所提供的教學文件,因為在幾天內就要上手,所以只是很大概的學一學而已,詳細的流程與設計步驟請參閱Flash中的說明文件。
首先開啟了Flash 8之後,第一步就是先建立一個專案,起在主畫面中點選Flash專案,如下圖中紅色圈圈中所示。
 
 
然後為專案取個名字並且選擇存檔路徑,如下圖所示
 
 
按下存檔後,你就建立好你的第一個專案,如下圖所示
 
 

接著建立一個Flash 文件,從檔案/開啟新檔,在"一般"的畫面中選擇Flash 文件,然後按確定。接著請將該檔案另存新檔,點選檔案/另存新檔,命名為main.fla,接著在專案視窗中按滑鼠右鍵,並將main.fla加入專案中。如下圖所示。
 
 
增加完成之後如下圖所示,在專案中會顯示main.fla這個檔案,請將這個檔案設成預設文件,方法在該檔案上按滑鼠右鍵,並選擇"設成預設文件"的選項。
 
 
接下來開始設計你的Flash程式。Flash程式設計分成兩部分,一部分是場景的設計,你可以在場景中擺設一些元件,來豐富你的畫面。另一個部分就是動作流程的設計。在場景的配置部分請你先試著拉出一個動態的文字方塊,請從左的工具列中選擇"A"那個圖案的工具,並請在場景中佈置動態文字方塊的大小與位置,如下圖所示。
 
 

你可以自行調整適合的字體大小、位置和顏色。假設你已經設定完成,接下來就要撰寫動作部分的程式。我把所有的程式撰寫在圖層1:1的地方,程式碼如下:
/*
 *  目的:     連接Web Service的簡單範例
 *  作者:     Jia-Yang Chen  jia.yang.chen@gmail.com
 *  完成日期: 2006/08/04
 *
*/
//每隔10秒鐘執行一次showMessage這個function
setInterval(showMessage,10000,"");
var countNum = 0;

/*
 *  showMessage主要工作連結上Web Service,取回Web Service中的資料,
 *  我們會把取回來的資料顯示在outputData那個動態文字中
*/
function showMessage()
{

countNum = countNum + 1;
listener = new Object();
listener.Onecho = function(event) {

if(event.target.IsFault()) {
      outputData = "遠端伺服器發生問題,無法回應";

} else {   
      outputData = event.target.Data; 
}

}

 //連接server,192.168.0.10請改成你所指向Web service 的IP Address 
 server = new XMLRPC.ProxyServer("http://192.168.0.10:5630");
 var data = [countNum];
 //傳送資料給server
 server.Call("echo", data, listener);  
   

}

這段程式的目的是每隔10秒向Web Service要回資料,並且將資料顯示於我們剛才所擺設的動態文字中。詳細的程式碼請參閱這裡

三、Pyhton的程式設計

關於Python的RPC Service,我們這次採用Python內建的SimpleXMLRPCServer模組來達成,所以不必安裝其他額外的模組,下面維程式範例:
#############################################################################
#    此程式的目的是撰寫Web Service的RPC                  
#
#    程式製作者:陳佳揚
#    使用程式:  python
#    版本:3.0
#    完成日期:
#
#############################################################################
import SimpleXMLRPCServer
def echo(index):
   index = int(index)
   ANS = "Test"
   if index % 4 == 0:
      ANS = "你好嗎?"
   if index % 4 == 1:
      ANS = "加油"
   if index % 4 == 2:
      ANS = "今天是愚人節嗎?"
   if index % 4 == 3:
      ANS = "今年又快結束了,你成功了嗎?"
   return ANS         

 
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("192.168.0.10", 5630))
server.register_function(echo)
try:
   server.serve_forever()
except e:
   debug = e 
 
這段程式是根據不同的代碼給予回應,詳細的程式碼請參閱這裡

 
執行結果
 
arrow
arrow
    全站熱搜

    CJY0503 發表在 痞客邦 留言(1) 人氣()