2010-06-10 69 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