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

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

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

    【永恒的瞬間】
    ?Give me hapy ?
    Flex與XMl通信研究
    2006-11-28 10:34
    最近一直在網上轉悠,網上的flex文章越來越多了,但是都使一些關于DB、控件、httpservice之類的文章,其實flex以xml作為數據源來進行操作,也是比較重要的。
    正好前一陣子在研究E4X與Flex的關系,所以打算總結一下,有說的不對的地方,還請大家多多原諒。
    一、最簡單模式:Flex通過httpservice和dataProvider進行數據傳輸

    ?
    Xml格式如下:
    <?xml version="1.0" encoding="utf-8" ?>
    <Result>
    <NodeA>value1</NodeA>
    <NodeB>valve2</NodeB>
    ……………………………………………
    ……………………………………………
    </Result>

    Flex中有一個DataGrid,這樣就可以用httpservice來使DataGrid獲取xml的數據了。

    Flex端如下:

    <?xml version="1.0" encoding="utf-8"?>???

    <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"

    ??? title="Blog Details">

    ??? <mx:HTTPService showBusyCursor="true" url="http://localhost:8080/text.xml"/ id=”xmlRecord”>

    <mx:DataGrid width="712" height="338" dataProvider="{xmlRecord.lastResult.Result}">

    ??????? <mx:columns>

    ?????????????? <mx:DataGridColumn headerText="SectionA" dataField="NodeA " width="400" />

    ?????????????? <mx:DataGridColumn headerText="SectionB" dataField="NodeB" width="30"/>

    ????? 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    ??????? </mx:columns>

    </mx:DataGrid>

    ?

    </mx:TitleWindow>

    ?

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    ???? 其中紅字部分必須一直,由于這個sample比較簡單,所以kenshin就不深入研究了。

    ???? 黃字部分一定要按照xml的結構書寫。

    這樣在run 這個Flex的時候,在DataGrid中就會顯示NodeA&NodeB的內容即value1&value2
    二、稍微復雜一些模式
    Xml端代碼如下:

    <?xml version="1.0" encoding="UTF-8" ?>

    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

    <channel>

    ??? <title>value1</title>

    ??? <link>http://www.k-zone.cn/zblog</link>

    ??? <description>關注Flex,Java,DotNet,Web Desgin</description>

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    </channel>

    </rss>

    Flex端如下:

    <?xml version="1.0" encoding="utf-8"?>

    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

    ??? layout="absolute"

    ??? creationComplete="feedRequest.send()" >

    ??? <mx:HTTPService

    ??????? id="feedRequest"

    ??????? url=" http://localhost:8080/text.xml"

    ??????? useProxy="false" />

    ??? <mx:Panel x="10" y="10" width="475" height="400" layout="absolute"

    ??????? title="{feedRequest.lastResult.rss.channel.title}">

    ??? </mx:Panel>

    ??? 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    </mx:Application>

    ?
    如果想要得到上面的xml中title的值,只需按照藍字部分書寫即可得到Title的value。
    以此類推如果想要得到xml中link的內容,應該按如下書寫

    feedRequest.lastResult.rss.channel.link

    ?
    三、復雜一些的模式,即xml的格式比較特殊
    Xml端代碼如下:

    <?xml version="1.0" encoding="utf-8"?>

    <Result>

    <SectionA SubSectionA1=”value1” SubSectionA2=”value2”/>

    <SectinB SubSectionB1=”value3” SubSectionB2=”value4”/>

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    </esult>

    如果大家想要得到SubSectionA1的內容,就顯得無從下手了。其實用E4X在actionscript3中已經支持的非常完美了。并且Flex builder2提供的help也有這樣的例子。但是我找了一下,沒有這樣的例子,所以自己研究了一下。并且把結果告訴大家。
    要顯示SubSectionA1的內容。Flex端如下書寫:

    var loader:URLLoader = new URLLoader();

    var request:URLRequest = new URLRequest("data/sampleData.xml");

    loader.load(request);

    loader.addEventListener(Event.COMPLETE, onComplete);

    ??????? }

    public function onComplete(event:Event):void {

    ??? var externalXML:XML;

    ??? var loader:URLLoader = URLLoader(event.target);

    ??? externalXML = new XML(loader.data);

    ??? trace(externalXML. SectionA [0].@ SubSectionA1);

    }

    其中粗體紅字SubSectionA1的內容了。其中externalXML. SectionA [0].@ SubSectionA1中的[0]是xml的record的條數。@后面的就是想要得到的子節點的值。其內容可以是SubSectionA2、SubSectionB等等的值。部分就是

    ?
    關于xml的格式在繼續引伸一下。以下的格式

    <?xml version="1.0" encoding="utf-8"?>

    <Result>

    <SectionA SubSectionA1=”value1”/>

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    </Result>

    ?
    相當于如下的格式:

    <?xml version="1.0" encoding="utf-8"?>

    <Result>

    <SectionA>

    <SubSectionA1>value1”</ SubSectionA1>

    </SectionA>

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    </Result>

    Flex與JavaScript的交互:調用JavaScipt或者被JavaScript調用 flex1.5
    2006-11-28 10:36
    一、在Javascript中調用Flex方法
    在Flex中可以用ExternalInterface來調用Flex的方法,途徑是通過在Flex應用可調用方法列表中添加指定的公用方法。在Flex應用中通過調用addCallback()可以把一個方法添加到此列表中。addCallback將一個Actionscript的方法注冊為一個Javascript和VBscript可以調用的方法。
    addCallback()函數的定義如下:
    addCallback(function_name:String, closure:Function):void
    function_name參數就是在Html頁面中腳本調用的方法名。closure參數是要調用的本地方法,這個參數可以是一個方法也可以是對象實例。

    舉個例子:
    <mx:script>
    import flash.external.*;
    public function myFunc():Number {
    return 42;
    }
    public function initApp():void {
    ExternalInterface.addCallback("myFlexFunction",myFunc);
    }
    </mx:script>
    那么在Html頁面中,先獲得SWF對象的引用,也就是用<object .../>聲明的Swf的Id屬性,比如說是MyFlexApp。然后就可以用以下方式調用Flex中的方法。
    <script language='Javascript' charset='utf-8'>
    function callApp() {
    var x = MyFlexApp.myFlexFunction();
    alert(x);
    }
    </script>
    <button onclick="callApp()">Call App</button>



    二、在Flex中調用 Javascript
    你可以調用Html頁面中的Javascript,通過與Javascript的交互,可以改變Style,調用遠程方法。還可以將數據傳遞給Html頁面,處理后再返回給Flex,完成這樣的功能主要有兩種方法:ExternalInterface()和navigateToUrl()。
    在Flex中調用Javascript最簡單的方法是使用ExternalInterface(),可以使用此API調用任意Javascript,傳遞參數,獲得返回值,如果調用失敗,Flex拋出一個異常。
    ExternalInterface封裝了對瀏覽器支持的檢查,可以用available屬性來查看。
    ExternalInterface的使用非常簡單,語法如下:
    flash.external.ExternalInterface.call(function_name: String[, arg1, ...]):Object;
    參數function_name是要調用的Javascript的函數名,后面的參數是Javascript需要的參數。
    舉個例子說明如何調用Javascript函數
    Flex應用中,添加如下方法:
    <mx:script>
    <?xml version="1.0" encoding="iso-8859-1"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:script>
    import flash.external.*;

    public function callWrapper():void {
    var f:String = "changeDocumentTitle";
    var m:String = ExternalInterface.call(f,"New Title");
    trace(m);
    }
    </mx:script>
    <mx:Button label="Change Document Title" click="callWrapper()"/>
    </mx:Application>
    Html頁面中有如下函數定義:
    <script LANGUAGE="Javascript">
    function changeDocumentTitle(a) {
    window.document.title=a;
    return "successful";
    }
    posted on 2007-02-28 20:29 ???MengChuChen 閱讀(529) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品国产_亚洲人成在线| 亚洲午夜无码久久久久| 亚洲综合色丁香麻豆| 最近免费中文字幕MV在线视频3| 日韩亚洲国产二区| 在线观看亚洲电影| 亚洲免费日韩无码系列 | 亚洲人成人伊人成综合网无码| 30岁的女人韩剧免费观看| 久久久无码精品亚洲日韩按摩 | 亚洲国产精品国自产拍AV| 国偷自产一区二区免费视频| 国产裸体美女永久免费无遮挡| 亚洲人成影院77777| 中文字幕亚洲第一在线| 亚洲国产成人久久一区二区三区| 亚洲欧洲免费无码| 色噜噜狠狠色综合免费视频| 亚洲高清国产拍精品青青草原 | 99久久国产精品免费一区二区 | 国产老女人精品免费视频| 日日摸日日碰夜夜爽亚洲| 亚洲国产一成久久精品国产成人综合| www永久免费视频| 无码乱人伦一区二区亚洲| 亚欧免费视频一区二区三区 | 中文字幕乱码亚洲精品一区| 国产网站在线免费观看| 你好老叔电影观看免费| 亚洲国产成人精品无码区在线网站| 处破痛哭A√18成年片免费| 一区二区三区免费电影| 亚洲电影中文字幕| 亚洲色婷婷六月亚洲婷婷6月| 美女裸身网站免费看免费网站| 亚洲色大网站WWW永久网站| 久久精品亚洲福利| 嫖丰满老熟妇AAAA片免费看| 香蕉视频免费在线| 亚洲美女色在线欧洲美女| 免费永久在线观看黄网站|