flex mxml和actionscript-3有什么区别

时间:2010-06-10 04:12:55

标签: flex actionscript-3

flex mxml和as3之间有什么区别。

3 个答案:

答案 0 :(得分:16)

MXML是一种基于XML的标记语言,用于使用Flex框架方便地定义用户界面和数据绑定。 MXML文件可以在<mx:Script>标记内包含ActionScript - 类似于在html文件中使用javascript的方式。

Flex编译器在将MXML标记编译为SWF / SWC之前将其转换为ActionScript-3代码。您在MXML中执行的大多数操作也可以使用ActionScript完成,但是需要更多行代码才能完成。

mxml文件创建一个同名的actionscript类,用于扩展与mxml文件的根标记对应的类。例如,MyCanvas.mxml中的以下代码生成扩展Flex MyCanvas类的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 }。

答案 1 :(得分:0)

MXML是一种声明性语言,用于在Flex应用程序中定义视图的用户界面元素。您还可以声明一些存在的非UI元素并支持该页面,但大多数情况下它仅用于UI元素。

AS3是一种编程语言,用于向应用程序添加所有逻辑和功能。

这两者通过事件和数据绑定联系在一起。

答案 2 :(得分:0)

看到mxml代码被编译成actionscript代码,然后转换成字节码,然后由flash播放器执行

看看动作脚本中发生了什么,你必须决定父母和孩子,所以它有点复杂,你必须为每个n代码编码,

如,

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

但是对于mxml,你只需要一个标签

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

所以在mxml中工作变得更容易了,但是mxml有一些限制,所以迟早你必须使用Actionscript,这就是我们每天都做的事情

我希望你有所了解 这是一个gr8天