王睿编著
北京:机械工业出版社
2008.1
1.1Flex与Flash的关系
如果开发者要想开发一个具有RIA特性的程序,使用Flex是其首选,而要开发一个完全的动画程序,还得选择Flash。
通过Flash专业工具制作出来的Flash程序是通过时间轴来播放动画效果的,也就是说所有的动画都是制作在各个不同的帧上的,然后再播放时通过时间轴把这些帧上的内容“串连”起来,从而组成一个完整的动画。与Flash程序不同,Flex应用程序总共只有两帧,第一帧显示的是载入SWF文件时读取下载SWF文件的进度信息,第二帧显示的是下载完成后执行的Flex程序的用户界面。因此,在制作具有时间轴效果的动画时应该首选Flash制作工具,而制作与时间轴无关的动画的RIA交互程序时应首选Flex。
Flex在一定意义上可以解释为运行在Flash基础上的一种框架技术。缺少了FLASH,FLEX也无法运行。这是由于,Flex所提供的类库,比如图形化控件或者布局控件等都是基于Flash API的,没有了Flash API,Flex应用程序是不能独立运行的。
2.1配置Flex SDK开发环境
1. 安装JDK
2. 从Adobe网站下载Flex SDK安装,并配置系统环境变量。
3. 编译常用指令: mxmlc –help compc –help
3.1MXML
使用<mx:Script>的Source属性或者include指示符去调用外部的ActionScript函数。由于include指示符和Script的source属性所导入的外部ActionScript代码不能以面向对象的概念来封装逻辑,而面向对象的特性又恰恰是ActionScript强大的大方,因此Adobe强烈建议开发者不要使用include指示符和Script的source属性。
以import方式导入外部的以面向对象方式封装的类文件。
4 ActionScript基础
4.1数据类型
原始数据类型:Boolean,int,Number,String,uint
复杂数据类型:XML,Date
无数据类型:用*或不声明任何变量类型来表示。
注:非原始数据类型在函数参数中是以引用方式进行传递的。
4.2变量的声明
var myString:String;
var myObject:Object;
4.3数据类型转换
var myString:String=”12”;
var myNumber:Number=Number(myString); //与java中的转换方式不一样。
4.4 delete操作符
delete可以删除动态类实例所添加的动态属性甚至是动态类实例中不存在的动态属性(虽然没有意义),它不能删除那些非动态属性。Delete操作是有返回值的,当操作成功时返回true,操作失败时返回false。
操作符delete还可以用于删除数组内的元素之。删除数组的某个元素之后,数组的长度不变。
4.5 in操作符
操作符in用来判断指定的属性是不是属于对象,这也包括对动态属性的判断。in操作符的返回类型时布尔值。要判断的属性名务必用“”括起来。
in操作符用作数组操作的时候,只能判断数组的索引值是不是有效。(0 in my Array)判断索引是0的数组元素是否存在。
4.6 for…in循环 & for each…in循环
for…in循环语句的用途是遍历动态对象(dynamic类型的对象实例)内所有动态属性或遍历数组内所有的元素(获取索引值)。
for(变量名字:String in 遍历对象){ //逻辑语句}
for each…in语句来自E4X脚本。它除了能完成for…in循环所提供的所有功能外,还用来遍历XML对象或XMLList对象。与for…in循环的不同是,for each…in只能遍历动态属性值或数组的值,而无法获取属性名或数组的索引值。
for each(变量名 in 遍历对象){ //逻辑语句}
4.7 arguments对象
Arguments对象是操作函数参数需要用到的内置对象。arguments对象实际是个数组,它包含了所有传递到函数中的参数。通过arguments的length属性可以确定所有参数的长度。
属性arguments.callee提供了访问当前函数引用的功能,这个功能在用匿名函数递归的时候非常有用。
例:[函数表达式]
var factorial:Function = function(x:uint){
if(x == 0){
return 1;
}else{
return(x*arguments.callee(x-1));
}
}
此外在ActionScript中还有…(其余)对象以及函数对象。
4.8 事件机制
所有的事件类型都应该是flash.events.Event的子类。
<mx:Button label=”点击我” click=”clickMe()” />
clickMe是对MouseEvent事件的监听方法。MouseEvent就是事件对象,而Button控件对象则是事件目标。从事件流中捕获对应事件的监听事件则是clickMe方法。
对事件的捕获是通过addEventListener方法来完成
myButton.addEventListener(MouseEvent.CLICK,clickMe);
myButton.removeEventListener(MouseEvent.CLICK,clickMe);
4.9 使用XML
Flex中支持两种对XML的操作方式,一个是传统的XMLDocument类,另一个是E4X。
var xml:XML = new XML(xmlStrContent);
浙公网安备 33010602011771号