今天已经进入 FLEX 学习的第二阶段了。在第一个阶段的学习中,我把学习的一些技巧和需要注意的地方总结了一下,希望对后来者有所帮助。
在这个阶段中,我主要学习了以下内容:FLXE & MXML 语言简介,容器类组件,触发器和动画效果,事件机制。
一、FLXE & MXML 语言简介
MXML 语言是专门用于 FLEX 程序里面的,用来描述界面以及表现行为的一种 XML 标记语言。这里我是用的 Flex Builder 来编写 FLEX 程序的。大家可以根据自己的爱好用不同的工具来写。例如:editplus 等等。里面重要的几点有:
1 MXML 语言区分大小写。
2 文件名被 FLEX 编译成一个对象,所以在编写的时候千万注意里面的变量名不能和文件名重合。
3 Flex Builder 是基于 eclipse 的一个开源框架,大家可以自定义界面。这里我把怎样修改快捷键的方法告诉
大家: 选择顶部菜单 > Window > Preferences > General > Keys 。
4 关于 Flex Builder 目前我还没有找到汉化的方法,所以还只能用英文版,可能对像我这样的人学起来会很不方便。如果有这里哪位强人能把汉化的方法贴出来,那就太棒了!~。
5 不爽的就是编译变严格了,在监听一个对象时需要在函数里把监听的类型写出来。
6 还有就是申明了函数、方法、类或变量时需要指定他们的类型,当然这个不会抱错,但是编译器会提示。
7 写类文件的时候必须是 public 的。貌似现在默认是变成了 internal ,所以要加上个public 。
二、容器类组件
FLEX 最NB的地方之一是,提供了各式各样的有力的容器组件,这些组件可以让我们在界面上不用花太多的时间就可以实现很多使用而且好看的效果,我们需要做的只需要把内容和容器绑定,容器就可以自动处理界面布局了。
具体的容器有很多,梢后我会放出一些简单的例子来。
在FLASH8时代,统领视觉元素的还是 MovieClip 对象。到了FLEX 时代这个 MovieClip 就被划分的很细了。首先创建了 DisplayObject 抽象类,将所有可以显示的对象包括进来,然后按照功能将其分成七个大类。
AVM1Movie:虚拟机1。由AS自动创建,用来执行早期的 SWF 文件。
Bitmap:位图对象。可以通过代码创建。
InteractiveObject:抽象类,由AS自动创建,接受用户交互的对象。
MorphShape:补间变形,自动生成。
Shape:形状元件,可以用函数创建。
StaticText:静态文本,自动创建。
Video:视频对象,可以函数创建。
三、触发器和动画效果
其实我们现在所看到的动画,是一个行为对象。可以看作是触发器和动画效果的结合体。即:一个动画实际上分为触发器和动画效果这两部分。在 FLEX 里这些都被封装起来。甚至连一个个常用的动画效果也很好的封装起来。所以大家用的时候会非常简单。
这里我就不贴代码了,一会直接上例子。
四、事件机制
这次我要重点谈谈 FLEX (即:AS3.0)的事件机制。因为他和flash8时代有了较大的不同。
大家都知道,在 AS3.0 中无处不是事件。在 FLEX 中更是如此。FLEX 程序最擅长处理的用户交互正是事件的典型代表。在 AS3.0 中事件机制采用单一的方式:addEventListener 方法来注册监听器,且监听器必须是函数。这里监听器的作用域和监听器所在的对象的作用域是一致的。(这是AS3.0新增的一个特性,在AS2.0时代需要用到Delegate来指定作用域)
Eg:
internal function click(event:MouseEvent):void{
trace(this);
}
myButton.addEventListener("click", this);
这里 trace 的this指类的实例本身,而不在是函数 click 本身。
在 AS3.0 中引用了事件流的概念。指当事件发生后,Flash Player 生成一个携带数据的对象,然后检查目标对象是否处于显示层中,如果是,则遍历从根容器一直到目标对象所在位置的所有对象。事件流按运行流程分为三部:
1 捕获阶段
2 目标阶段
3冒泡阶段
好了,暂时就写这么多了,这篇文章主要是写给和我一样从 AS2.0 开始学 FLEX 朋友们,因为是想到哪写到哪,所以思路可能不怎么清晰,在加上我也是刚刚涉足这个,所以如果有错误的话还请大家多多包涵。
更多内容参见:
http://www.ibio8.com/article.php?id=174