下面來教大家在.net環(huán)境下寫最簡單的hello world,好了閑話少說,現(xiàn)在開始:
這里我假設你已經(jīng)看過我第一篇關于配置的文章,并已經(jīng)成功的執(zhí)行了前兩個例子。
1.首先請大家進入你的虛擬目錄c:\Inetpub\wwwroot,在這里你會看到flashremoting文件夾,也就是例子文件的文件夾,在這個目錄新建一個myASPApp文件夾,這里我們開發(fā)的程序就放到這個文件夾下,在這里我們新建一個名為bin的目錄,建好之后請回到c:\Inetpub\wwwroot,進入flashremoting目錄,把這里的bin目錄下的flashgateway.dll和frconfig.txt文件拷貝到myASPApp下的bin目錄里,然后在把flashremoting下的gateway.aspx和web.config兩個文件拷貝到myASPApp目錄下,在這里我不具體介紹為什么我們要把這些文件拷貝到相應的目錄里,如果你想了解請看自帶的幫助文件remoting支持4種.net技術分別是:
asp.net ado.net data-binding web services assembly(with the .dll extension)
要讓我們寫的remoting程序能夠找到asp.net頁你就必須把asp.net頁放到虛擬目錄下或者是子目錄下,也就是我們?yōu)榱藚^(qū)分我們要開發(fā)的項目所以我們在虛擬目錄下建了一個myASPApp文件夾,我們把我們需要的asp.net放到這里就可以了。好了,下面我們開始寫程序了。
2.在myASPApp下建立一個.aspx文件,也就是asp.net文件取名為helloWorldNET.aspx 首先要把你用的是什么語言做聲明,我這里用的是vb.net寫法是
<%@ Page language="vb" debug="true" %>
為了從flash應用程序中調(diào)用數(shù)據(jù),或者在asp.net頁面返回結果給flash,你要在asp.net頁面上使用flash remoting定制服務器端控制這個控制是又flashgateway.dll所提供的,也就是拷貝到bin目錄里的flashgateway.dll,你必須在程序代碼之前首先注冊這個控制,方法是這段代碼
<%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %>
這個注冊說明了建立標識符前綴Macromedia,和命名空間FlashGateway,以及提供功能的動態(tài)連接庫文件flashgateway注冊之后你就可以使用它傳遞數(shù)據(jù)給flash應用程序了比如這樣
<Macromedia:Flash ID="Flash" runat="server"> Hello from .NET! </Macromedia:Flash>
這里我個人認為,在<Macromedia:Flash ID="Flash" runat="server"></Macromedia:Flash>之間寫的任何代碼都會被做為返回值傳遞給flash,比較像.net中的response.wirte()和java中的System.out.print();說到這里大家可能已經(jīng)會寫這個程序了,不錯上面的代碼就是hello world程序,但是這里我不提倡大家這樣寫,還有另一種寫法,在注冊完之后直接寫這樣的代碼<Macromedia:Flash ID="Flash" runat="server"/>,然后在下面我們用asp.net的正常寫法
<script runat="server"> sub page_load(sender as object,e as eventargs) flash.result="hello world!!!" end sub </script>
這里我們用page_load也就是頁面加載時所執(zhí)行的程序,這樣,當這個頁面加載時就會把hello world直接傳遞給flash對象的result方法,這是我們在flash里接收的值的方法,好了asp.net頁面已經(jīng)寫完了,下面看一下完整的代碼
<%@ Page language="vb" debug="true" %> <%@ Register TagPrefix="Macromedia" Namespace="FlashGateway" Assembly="flashgateway" %> <Macromedia:Flash ID="Flash" runat="server"/> <script runat="server"> sub page_load(sender as object,e as eventargs) flash.result="hello world!!!" end sub </script>
3.下面是我們所要寫的flash端的代碼,這里首先要把remoting類導入到flash中,方法很簡單選擇菜單欄,窗口--其他面板--公用庫--remoting,這時你會看到界面右邊出現(xiàn)remoting的庫面板,把RemotingClasses拖到場景中在刪除,這樣RemotingClasses類就會被添加到我們的文件的庫里面,程序執(zhí)行的時候它就被導入到程序里了,如果你想在NetConnection Debugger面板里調(diào)試程序,那么你需要把remoting類庫里的RemotingDebugClasses也拖到場景中,好了現(xiàn)在開始寫as程序
4.拖一個textinput組件到主場景中,取名為messageDisplay_txt,然后選擇主場景第一真打開動作面板,首先需要導入一些需要的類代碼如下
import mx.remoting.Service; import mx.rpc.RelayResponder; import mx.rpc.FaultEvent; import mx.rpc.ResultEvent; import mx.remoting.PendingCall;
之后第一步我們要連接服務器所以創(chuàng)建一個service對象代碼如下:
var howdyService:Service = new Service("http://localhost/myASPApp/gateway.aspx", null, "myASPApp", null, null);
第一個參數(shù)http://localhost/myASPApp/gateway.aspx首先指定到虛擬目錄下的myASPApp下的gateway.aspx文件,他做一個轉向的作用,必須這么寫,第三個參數(shù)需要指定你的asp.net頁在什么地方,這里因為我把helloWorldNET.aspx放到myASPApp目錄下所以直接寫myASPApp就可以了,但是如果你要把helloWorldNET.aspx放到myASPApp的其他子目錄下例如,helloworld目錄下,那么你就要寫成myASPApp.helloworld。
第二步呼叫服務器端的helloworld方法
var pc:PendingCall = howdyService.helloWorldNET();
這里你會看到呼叫的服務器端的方法其實就是asp.net頁helloWorldNET.aspx的名字
第三步需要寫呼叫方法后服務器返回的結果和或者是失敗的方法
pc.responder = new RelayResponder(this, "serviceFunctionName_Result", "serviceFunctionName_Fault"); 這里如果呼叫成功那么執(zhí)行我們自定義的serviceFunctionName_Result方法,如果呼叫失敗那么執(zhí)行我們自定義的serviceFunctionName_Fault方法。 然后我們要寫自定義的兩個方法,首先是serviceFunctionName_Result方法,代碼如下:
function serviceFunctionName_Result(result:ResultEvent) { // display successful result messageDisplay_txt.text = result.result; }
這里當呼叫成功后會把服務器端的結果傳遞給result對象,result對象的result方法就是從服務器端得到的值,然后我們把他放到messageDisplay_txt里顯示 當呼叫失敗時flash會調(diào)用serviceFunctionName_Fault方法,代碼如下:
function serviceFunctionName_Fault(fault:FaultEvent) { //display fault returned from service messageDisplay_txt.text = fault.fault.faultstring; }
失敗的信息,會傳遞給fault對象,然后用messageDisplay_txt來顯示出來,好了這個程序已經(jīng)寫完了,完整的代碼如下:
import mx.remoting.Service; import mx.rpc.RelayResponder; import mx.rpc.FaultEvent; import mx.rpc.ResultEvent; import mx.remoting.PendingCall; // connect to service and create service object var howdyService:Service = new Service("http://localhost/myASPApp/gateway.aspx", null, "myASPApp", null, null); // call the service helloWorld() method var pc:PendingCall = howdyService.helloWorldNET(); // tell the service what methods handle result and fault conditions pc.responder = new RelayResponder(this, "serviceFunctionName_Result", "serviceFunctionName_Fault"); function serviceFunctionName_Result(result:ResultEvent) { // display successful result messageDisplay.text = result.result; } function serviceFunctionName_Fault(fault:FaultEvent) { //display fault returned from service messageDisplay.text = fault.fault.faultstring; }
看完之后大家是不是覺得調(diào)用.net方法其實很簡單,不錯,as代碼方面其實寫法比較固定,只要正確的找到gateway.aspx文件引導,然后正確的找到你所寫的asp.net頁,應該就沒有什么問題。在這里我注重把as2.0的寫法告訴大家,并沒有對每一個對象例如Service,PendingCall等對象做細致的講解,如果你想仔細的認識這些對象那么請看相關資料
下一節(jié)將會向大家介紹java環(huán)境下的hello world程序,我會努力的已最快速度寫出來的,由于時間倉促,所以難免有寫的不對的地方,如果寫錯了,請大家指正,如果想與我討論remoting方面的問題的請與我聯(lián)系我的qq:22339146,msn:lwanchen@hotmail.com。
如要轉載請標明作者lwanchen,謝謝。!
出處:藍色理想
責任編輯:藍色
上一頁 配置篇 下一頁
◎進入論壇Flash專欄版塊參加討論
|