09.10.27
Flex应用程序主要由2种不同的语言构成:
① AS
② MXML
MXML与AS如何互相关联:
<mx:Button id=”btn” label=”My Button” height=”100”/>
等于
var btn:Button=new Button();
btn.label=”My Button”;
btn.height=100;
将会生成同样的对象。
主要不同在于:
AS:仅仅创建按钮而不做任何其他事情。
MXML:创建一个按钮并将其添加到包含MXML代码的任意类型的一个组件。
Flex Framework负责处理MXML中对象构造器的调用
MXML文件能够用<mx:Script>标签将AS包含其中,而AS文件却不能包含MXML
这2种语言通过不同的语法最终都描述了同样的对象
在MXML中添加时间监听器
用来监听MXML文件中子对象调度的任何事件
当发生动作时Flex组件总会调度事件。例如用户点击按钮。要监听这些被广播的事件,只要增加一个对处理该事件的函数。
Flex中的事件对象和事件调度系统式应该理解的最重要的内容之一。所有的事件都包含一种类型,在事件被监听时会用到这种类型。如果一个事件的类型为click,那么事件监听函数则被添加到子对象的click事件中:
<mx:Button click=”trace(‘I was clicked’)”/>
用户交互操作的通知,从服务器端发送到应用程序的消息或者定时器等都通过事件来发送。
用AS为MXML中定义的子对象设置属性:
我们很容易会认为组件的脚本部分与MXML部分是相互独立的,但其实他们完全不是独立的。
id必须是唯一的名称,用来在整个应用程序中引用父组件中的子组件。
定义数组和对象集:
像Flex中很多东西一样,数组和对象集作为2种最常用的用于存储数据的数据类型。
在MXML中定义一个数组,使用<mx:Array>标签。
<mx:Array>
<mx:String>Flex</mx:String>
<mx:String>Flash</mx:String>
</mx:Array>
在MXML中创建一个对象,使用<mx:Object>标签。
<mx:Object id=”person” age=”50” name=”Anson”/>
在MXML中创建对象的局限性在于不能创建多个嵌套对象。
设置AS中变量的作用域:
Private变量和函数只在组件自身范围内可见,其他组件无法访问他们。
final修饰符,用于向编译器说明该方法不能被继承该类的其他类修改。
① 在AS中,构造器是被显式调用的。
② 在MXML中,Person的构造器是在包含Person对象的父组件的构造器被调用时才被调用的。
使用时间冒泡:
有几种类型的时间能够冒泡向上传递:
① 鼠标按下事件,点击时间
② 键盘事件
“冒泡”这个词指的是事件沿着显示列表向上传递直到应用程序容器,就像是一个水泡在水中向上浮到水面。
为了让父组件监听到子组件中某种类型的所有事件,父组件只需要添加一个对子组件的事件监听器,就能够接收到所有冒泡的事件。
使用Code-Behind模式分离MXML和AS:
<cookbook:CodeBehindComponent xmlns:mx=http://www.adobe.com/2006/mxml width=”200”
height=”400” xmlns:cookbook=”oreilly.cookbook.*”>
<mx:Button click=”clickHandler(event)”/>
</cookbook:CodeBehindComponent>
类CodeBehindComponent的定义:
package oreilly.cookbook{
import mx.containers.Canvas;
import flash.events.Event;
public class CodeBehindComponent extends Canvas{
///////////////……………….
protected function clickHandler(event:Event):void{
trace(“Click handled from component”+event.target);
}
}
}
可以看出来类CodeBehindComponent中定义了函数clickHandler,这就是控制器和视图展现的分离概念。