<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-17  評論-64  文章-79  trackbacks-1
            隨著adobe的FLEX和ROMTING的開源化又引起一場的RIA風(fēng)波,我作為傳統(tǒng)的WEB開發(fā)人員被其深深的吸引,作為web開發(fā)人員很關(guān)注flash如何和后臺連接,在網(wǎng)上苦苦尋找終于發(fā)現(xiàn)了,在AS3下如何和后臺通信,其實FLASH ROMTING 和JAVA DWR設(shè)計很相似都是通過中間來轉(zhuǎn)化后臺和前臺對象,今天我就以一個金典的HELLOWORLD程序來展現(xiàn)這個框架。
            首先到http://www.amfphp.org下載AMFPHP1.9,這是目前的最新版本支持AMF3,不像以前的版本1.9版本的部署非常簡單解壓縮后直接拷貝到apache配置的web下面我這里是D:\develop\WebDev\web\amfphp,然后可以測試一下安裝是否成功在地址欄中輸入http://localhost:8080/amfphp/gateway.php如果看到第一行amfphp and this gateway are installed correctly. You may now connect to this gateway from Flash。說明安裝成功可以進(jìn)行下一步了。
            然后寫后臺PHP代碼:Hello.php文件
                <?php 
                            class Hello{
                                    function sayHello(){       
                                           return "Hello World";
                                     }
                            }
                ?>
            后臺代碼很簡單,用過1.0版本的人可能發(fā)現(xiàn)這里沒有方法表了(我覺得這個改進(jìn)使得業(yè)務(wù)方法和框架解耦了是個非常好的改進(jìn)),為了簡單這里不講私有g(shù)ateway.php配置直接調(diào)用公有的gateway.php,將Hello.php移動到amfphp\services下面,這樣服務(wù)器端就完成了。
            下面是客戶端的編寫:
              無意中在網(wǎng)上發(fā)現(xiàn)了一個很好封裝flash.net.Responder, flash.net.NetConnection 這兩個類的代碼這里公布給大家一起學(xué)習(xí)一下

    /*
    Remoting類
    負(fù)責(zé)FLASH與數(shù)據(jù)庫交互
    */

    package 
    {
        import flash.net.Responder;
        import flash.net.NetConnection;

        public class Remoting extends NetConnection 
    {
            
    /*
            構(gòu)造
            @param gatewayURL remoting網(wǎng)關(guān)地址
            @param amfType 使用AMF3或AMF0
            
    */

            public 
    function Remoting(gatewayURL:String,amfType:uint) {
                super();
                
    this.objectEncoding=amfType;
                
    this.connect(gatewayURL);
            }

            
    //##########################################################################
            //
            //方法
            //
            //##########################################################################
            /*
             * 遠(yuǎn)程返回函數(shù)
             * @param remoteMethod:遠(yuǎn)程類.方法名param遠(yuǎn)程方法所需要的參數(shù)onResultFun:返回數(shù)據(jù)所調(diào)用的方法句柄.onFaultFun同理.
             * 
            
    */

            public 
    function respond(remoteMethod:String,onResultFun:*,onFaultFun:*,... param):void {
                
    var parameters:Array=param;
                
    if (param.length > 0{
                    parameters.unshift(remoteMethod,
    new Responder(onResultFun,onFaultFun));
                    
    this.call.apply(this,parameters);
                }
     else {
                    
    this.call(remoteMethod,new Responder(onResultFun,onFaultFun));
                }

            }

        }

    }
            

    然后在任何地方可以調(diào)用它:

    var remote:Remoting;
    remote
    =new Remoting("http://localhost/remotinggame/gateway.aspx",0);
    remote.respond(remoting方法名,onRuslt,onFault,參數(shù)1,參數(shù)2....);

    function onRuslt(re:*):void{
           trace(
    " onRuslt:"+re);
    }

            
    function onFault(fe:*):void{
          trace(
    " onFault:"+fe.code);            
    }

    下面用上面封裝的類來實現(xiàn)HELLOWORLD
    package {
        import flash.display.Sprite;
        
        
        public class Hello extends Sprite
    {
            
            private 
    var remoting:Remoting;
            
            public 
    function Hello (){
                    init();
                }

            
            private 
    function init():void{
                    remoting
    =new Remoting("http://localhost:8080/amfphp/gateway.php",3
    );
                    remoting.respond(
    "Hello.sayHello",onGetData_Ruslt,onGetData_Fault);
              }

            
            private 
    function onGetData_Ruslt(re:*):void{
                    trace(re
    );
               }

            private 
    function onGetData_Fault(fe:*):void{
                
    for(var what in fe){
                    trace(what
    +"  fe:"+fe[what]);
                }

            }

        }

    }

    posted on 2007-12-13 21:52 飛鳥 閱讀(593) 評論(0)  編輯  收藏 所屬分類: RIA
    主站蜘蛛池模板: 亚洲日韩涩涩成人午夜私人影院| 成人免费AA片在线观看| 国产99视频精品免费视频7| 亚洲深深色噜噜狠狠网站| jjizz全部免费看片| 亚洲av无码专区在线| 久久笫一福利免费导航| 久久狠狠爱亚洲综合影院| 久久综合AV免费观看| 在线观看日本亚洲一区| 精品免费久久久久久成人影院| 亚洲成在人线aⅴ免费毛片| 国产一精品一aⅴ一免费| 美女视频黄视大全视频免费的| 亚洲另类少妇17p| 在线免费播放一级毛片| 91亚洲国产成人久久精品网站| 麻豆视频免费播放| 亚洲av无码有乱码在线观看| 亚洲高清偷拍一区二区三区| 久久免费国产精品| 久久亚洲日韩看片无码| 永久免费av无码网站韩国毛片| 亚洲avav天堂av在线网毛片| 亚洲精品无码久久久| 日韩免费视频一区二区| 亚洲中文字幕无码亚洲成A人片| 国产不卡免费视频| 成全动漫视频在线观看免费高清版下载| 亚洲AV无码一区二区乱孑伦AS | aa级毛片毛片免费观看久| 久热综合在线亚洲精品| 在线观看av永久免费| www在线观看免费视频| 亚洲天天做日日做天天看| 国产精品成人四虎免费视频| 国产精品免费久久久久影院| 亚洲视频在线观看地址| 夜色阁亚洲一区二区三区| 亚洲免费观看在线视频| 国产亚洲精彩视频|