2010-06-10 70 views
6

flex mxml和as3有什麼區別?flex mxml和actionscript-3有什麼區別?

+1

這有點像問Windows和Microsoft Office之間的區別。 – Matchu 2010-06-10 04:13:54

+2

@Matchu,根本沒有。這就像詢問關於ASPX與C#一樣。 – 2010-06-10 04:16:49

+1

@Sam - 是的,如果我不是他們的親,也許我不應該做出尖銳的評論。我有點認爲AS3是系統,而MXML是它的一個工具,但我幾乎不知道我在說什麼xD – Matchu 2010-06-10 04:23:45

回答

0

MXML是一種聲明性語言,用於在Flex應用程序中定義視圖的用戶界面元素。您還可以聲明一些非UI元素,它們存在並支持該頁面,但大多數情況下僅用於UI元素。

AS3是一種編程語言,用於將所有邏輯和功能添加到您的應用程序中。

兩者通過事件和數據綁定綁在一起。

0

看到MXML代碼編譯成ActionScript代碼,然後成字節碼,然後由flash播放器

看到動作發生什麼事時,你必須決定了家長和孩子執行的,所以它得到了有點複雜,我只好對每個n一切代碼,

例如,

Canvas can=new Canvas(); 
can.percentHeight=100; 
can.percentWidth=100; 
can.addChild(new Button); 

但在MXML的情況下,U只需要一個標籤

<Canvas height="100%" width="100%"><button></button></Canvas> 

所以它變得更加容易在MXML工作,但也有r爲MXML的一些限制,所以遲早u必須使用ActionScript,那是什麼,我們都做好日常

我希望你有一些想法 TC havw gr8 day

+0

我冒昧地格式化您的代碼 - 將來,只需選擇代碼並按下Ctrl-K即可對其進行格式化。 – Amarghosh 2010-06-10 04:37:59

16

MXML是一種基於XML的標記語言,用於使用Flex框架方便地定義用戶界面和數據綁定。 MXML文件可以包含<mx:Script>標籤中的ActionScript - 類似於HTML文件中的JavaScript。

在編譯爲SWF/SWC之前,Flex編譯器將MXML標記轉換爲ActionScript-3代碼。您在MXML中所做的大部分工作也可以使用ActionScript完成,但需要更多的代碼才能完成。

mxml文件創建一個與擴展與mxml文件的根標記對應的類的相同名稱的動作類。例如,MyCanvas.mxml中的以下代碼生成MyCanvas類,它擴展了Flex Canvas類。

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="200" 
    creationComplete="init(event)"> 

    <mx:Label text="{someVar}" id="theLabel"/> 

    <mx:Script> 
    <![CDATA[ 

    [Bindable] 
    public var someVar:String; 

    public function init(e:Event):void 
    { 
     someVar = "Created"; 
    } 
    ]]> 
    <mx:Script> 
</mx:Canvas> 

它相當於MyCanvas.as包含:

package 
{ 
    import mx.containers.Canvas; 
    import mx.controls.Label; 
    import mx.binding.utils.BindingUtils; 

    [Bindable] 
    public var someVar:String; 

    [Bindable] 
    public var theLabel:Label; 

    public class MyCanvas extends Canvas 
    { 
    this.width = 200; 
    this.addEventListener(FlexEvent.CREATION_COMPLETE, init); 
    } 

    public function init(e:Event):void 
    { 
    someVar = "Created"; 
    } 

    override protected function createChildren():void 
    { 
    theLabel = new Label(); 
    addChild(theLabel); 
    BindingUtils.bindProperty(theLabel, "text", this, "someVar"); 
    } 
} 

如果你看任何的Flex類的代碼(如UIComponentCanvas等),你會發現他們都.as文件而不是.mxml