- 浏览: 1189358 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (350)
- Ajax研究 (2)
- javascript (22)
- struts (15)
- hibernate (12)
- spring (8)
- 我的生活 (28)
- jsp (2)
- 我的随笔 (84)
- 脑筋急转弯 (1)
- struts2 (2)
- ibatis (1)
- groovy (1)
- json (4)
- flex (20)
- Html Css (5)
- lucene (11)
- solr研究 (2)
- nutch (25)
- ExtJs (3)
- linux (6)
- 正则表达式 (2)
- xml (1)
- jetty (0)
- 多线程 (1)
- hadoop (40)
- mapreduce (5)
- webservice (2)
- 云计算 (8)
- 创业计划 (1)
- android (8)
- jvm内存研究 (1)
- 新闻 (2)
- JPA (1)
- 搜索技术研究 (2)
- perl (1)
- awk (1)
- hive (7)
- jvm (1)
最新评论
-
pandaball:
支持一下,心如大海
做有气质的男人 -
recall992:
山东分公司的风格[color=brown]岁的法国电视[/co ...
solr是如何存储索引的 -
zhangsasa:
-services "services-config ...
flex中endpoint的作用是什么? -
来利强:
非常感谢
java使用json所需要的几个包 -
zhanglian520:
有参考价值。
hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS
AS 3.0 不是 AS 2.0 简单的升级
AS 3.0 支持运行期间的数据类型验证。AS 2.0只支持者编译期间的类型验证。
增强的异常处理机制
使用新的虚拟机AVM2(ActionScript Virtual Machine),代码的运行速度提升了10倍以上。
请结合上文阅读下面的小贴士 var str:* 这里的星代表不确定类型,可以赋予任意类型的值。
使用下面的代码来捕获/处理异常:
try{
代码
}catch(errObject:Error){
trace("这里在代码处发生错误执行,错误信息:"+errObject.message);
}finally{
trace("这里一定会被执行");
}
AS2.0 代码编译为字节码,体积小且安全,无法直接浏览SWF中的代码,但执行效率较低。计算机采用的是二进制代码来执行。AS3.0采用了JIT(Just in time compilation)技术,程序中运行时将字节码翻译为二进制码,并保存在内存中,从而改善了字节码的执行性能。
面向对象的编程思想
在AS3.0中所有一切都是对象,每个对象都具有自己的属性和方法。
在面向对象的程序设计中,对象必须被定义为类,它具有如下面向对象的特性:
封装 :最主要的优点就是将对象的信息隐藏,吧功能模块化。用户关心的是怎么去用这个类,不关心它是怎么实现的。
继承 :子类可以继承父类的方法和属性,还可以增加自己的新功能和属性。
可重用 :体现了封装和继承的优点。
抽象类:无法产生对象,定义很广泛,范围很大,无法有与之对应的具体实现。用来被其子类继承,它的子类必须定义了父类的抽象方法。
AS 3.0 的面向对象语法
创建类和对象
在ActionScript 中,类以as 为扩展名,文件名和类名相同。区分大小写,基本语法: package 包名 {
修饰词 class 类名 {
//代码块
}
}
package :类所属的包,一个类必须被放在包中。一个包对应文件系统中的一个文件夹,多层级的包对应多层级的文件夹,层级之间用点号分开:package mx.controls
类和变量以及函数名都遵循相同的命名规则,只能由字母、数字和下划线组成,不能以数字开头。类的定义必须在package 里面。
在一个AS类文件中,只能有一个public 类型的类,位于package 里面,且文件名必须和这个类名相同。
类有以下的修饰词:
public:公有类型,这个类可以在任何地方的任何对象访问,一般用来定义全局使用的类。
internal:内部类型,只能在同一个package 中的类才能访问,如果没有指定修饰词为internal。
dynamic:动态类型,类的属性和方法不确定,允许在运行时动态的添加。MovieClip 类便是动态类。当要继承动态类时,也要定义为动态类型。一般只用于特殊场合。
final:终点类型,表示类是继承关系中的终点,不能被继承。可以被视为一个固定的、无法被动态修改的常数。
public 和 internal 是最基本的修饰词,可以用来定义dynamic 和 final 类的类型。
在一个as文件中,可以定义多个类,但只能一个类位于package 中。
var 对象名:类名 = new 类的构造函数(); //实例化一个类
var 关键字用来声明一个变量或对象。
如果使用的类和代码所在的对象不在同一个包时,需要用 import 关键字将它引用进来:import 类的路径
类的构造函数:定义变量时被调用,跟类名相同的函数,必须是public类型,且没有返回值。构造函数是可选的,当没有定义时,编译器会自动添加一个空的函数。
定义属性和函数
属性是定义在类中的变量或者常量,而方法则对应一个函数,当调用类的方法时,也就是执行一个函数来完成相应的功能。
属性定义:定义一个类型为String的属性str,并符初始值"Hello"
private var str:String = "Hello";
方法:定义了一个方法ff 返回值为空,方法必须定义返回值
public function ff():void{//方法代码};
使用关键字 this 代表当前对象,指向类的实例。只有在创建类的实例时,this 才确立了自己的身份。
属性和函数有以下修饰词:public > internal > protected > private
public:公有类型,可以被所有的类使用。
protected:保护类型,定义的属性和函数可以在内部使用,或者在子类的内部使用,但外部是无法看到的。
private:私有类型,最严格的类型,只能在类的内部使用,外部无法看到的。
internal:内部类型,只能在同一个package 内部使用,可以被同一个 package 内的类访问。
函数参数默认值:如果调用函数时没有传入值,则使用默认值。
public function doTest(s:String = "默认值"):void{//代码}
函数的不定参数:参数的个数可以动态改变,不定参数使用...args 的形式,其中args是一个数组,存放了所有的参数。比如:
public function doTest(...args):void{
args[0];
args[1];
.....
}
调用时:
doTest("参数1","参数2",...);
静态属性、函数和常量
类的属性或者函数具有唯一性,即使类没有被实例化,它们也始终存在于内存中,不管类有多少个实例,静态属性和函数都只有1个,且和实例没有关系。
静态函数只能访问类的静态变量和静态函数。
定义静态类型:使用关键字 static ,其中public 和static 位置可以对调。
public static var str:String = "Hello";
public static function doTest(s:String):void{}
定义常量:常量的值在确认后就不能改变,使用关键字 const 定义:
public const STR:String = "我是常量";
如果将常量定位为静态类型,就成为了类的 静态常量。
一般采用大写字母定位常量。
继承
继承是指在已有类的基础上加新的属性和方法,保留了已有类的属性和方法。
AS 3.0 只允许一次继承一个父类。
子类可以访问父类中 public 和protected 类型的属性和函数,如果父类和子类中同包下,可访问internal类型的属性和方法,但private是无法访问的。
子类不能定义父类非private类型的属性和方法。
继承类使用关键字 extends:
public class subFl extends Fl
覆盖父类的方法:使用关键字 override ,在覆盖时,方法的格式必须是一样的。
父类方法:protected function doTest():void;
覆盖的方法:override protected function doTest():void;
调用父类的方法:super.doTest();
使用final 关键字定位为类不能被继承。
接口
AS3.0 没有提供定义抽象类的方法,只提供了接口。
接口是若干方法的集合,它只声明这些方法,而不实现方法。描述一类具有共同特性的对象,这些对象都实现了接口中的方法,同时有自己的特点。
接口只支持:public 或者 internal
定义接口:
public interface IExample{
function start(task:String):void;
function stop(task:String):void;
}
接口也可以实现继承,一次能继承多个接口:
public interface IExample extends Iinterface1, Iinterface2
接口的实现:implements ,一次可以实现多个接口,用逗号分隔。
public class Example implements IExample{
public function start(task:String):void{
//
}
public function stop(task:String):void{
//
}
}
在实现类中,必须定义接口中所有的方法,且遵循以下规则:
函数必须声明为 public 类型
函数名相同
参数数量和类型相同
返回值类型相同
同时继承类和实现接口:
public class Example extends Canvas implements IExmple
数据类型和数据运算
关于数据类型
一个变量或者常量被声明时,必须指定其数据类型:
原生数据类型:语言本身提供:字符串、整数、布尔型等
复杂数据类型:由基本数据类型组成的复合型类型:类、接口等。
基本数据类型:
Boolean:布尔型,true 和 false
int: 整数,存放32位二进制整数,范围:-2147483648~2147483647,当超出自动转为Number
Null:空值,是字符串和所有类的默认值。
Number:整数型和浮点型,使用64位双精度格式存放数据,没有小数点时自动转换成整数。最小值和最大值分别存放在Number 对象的MIN_VALUE 和 MAX_VALUE属性中。
String:字符串,以Unicode 编码格式存放。
uint:正整数类型,0~4294967295
void:值为undefined,只能用作函数的返回类型。
复杂数据类型:Object 对象、 Array 数组、 Date 日期、Error 错误对象、Function 函数、 RegExp 正则表达式、XML XML数据对象、XMLList。
其中Object 是所有对象的基类。
以下是各个类型的默认值
Object、Array :null
Number:NaN
int、uint:0
Boolean:false
*:不定类型,默认值:undefined。
字符串
可以使用单引号和双引号 来声明字符串,也可以使用String 的构造函数来生成:
var str1:String = 'string';
var str2:String = "string";
var str3:String = new String("string");
使用转义符号“\” 来转义符号后面的字符:"string\"test" = string"test
String 的属性:
length:用来获取字符串的长度
contact(...args):合并字符串,也可以使用+合并字符串
charAt(index):获取index位置的字符。
indexOf(val, starIndex):从starIndex 开始查找val 在字符串中第一个出现的位置。找不到返回-1
split(delimiter, limit):返回以delimiter 分隔最大为limit的数组。
substr(startIndex, len):从startIndex 位置开始截取长度为len的字符,如果startIndex为-1表示最后一个位置,当len大于最大长度时,自动返回最大长度值。
substring(startIndex, endIndex):截取从 startIndex 到 endIndex位置的字符,两个参数都不能为负数,否则转为0,如果endIndex 省略,取默认值:字符的长度。
slice(startIndex, endIndex):同substring,并允许startIndex, endIndex 为复数。
toUpperCase():转换为大写
toLowerCase():转换为小写
数字计算
算术运算符:符号 符号说明 符号 符号说明
+ 加法运算 -- 减1运算
- 减法运算 += a=a+ b
* 乘法运算 -= a=a- b
/ 除法运算 *= a=a* b
% 取模运算 /= a=a/ b
++ 加1运算 %= a=a% b
在进行除法运算时,如果被除数为0,则返回值为 Infinity。
Math 类 方法说明:
Math.round(n):四舍五入
Math.floor(n):返回小于或等于指定数字n 的最大整数
Math.ceil(n):返回大于或等于指定数字n 的最小整数
Math.pow(val1, val2):计算val1 的 val2 次幂
Math.sqrt(val):val的平方根
Math.max(val1, val2, ...rest):技术给定数字的最大值
Math.min(val1, val2, ...rest):技术给定数字的最小值
Math.randow():获取一个随机数字: 小于1大于等于0
数组的使用
创建数组:
var arr:Array = new Array(); //默认元素值为undefined
var arr:Array = new Array(3); //创建一个包含3个元素的数组。
var arr:Array = new Array("1", "2", "3"); //直接给数组定义元素
var arr:Array = [];
var arr:Array = ["1", "2", "3"];
var arr:Array = [3]; //并不是定义3个元素,而是将3作为数据放到数组中
获得数组元素:
arr[0]:第一个元素,如果下标超出范围,返回 undefined
arr.length:数字的长度
插入元素:
push():将数据添加到数组的尾部,push("flex")
unshift():将数据添加到数组队顶部,unshift("flex")
splice(startIndex, deleteCount, ...values):把数据插入到数组的指定位置,startIndex:操作的下标,deleteCount:要删除的元素个数,...values:要添加的若干数据。
删除元素:
pop():删除数组的最后一个元素
shift():删除第一个元素
splice(startIndex, deleteCount, ...values):删除任意位置的元素,从startIndex开始删除deleteCount个元素,并添加元素 values。
排序:
sort:主要对简单数据结构的数组进行排序
sortOn:对复杂数据结构的数组排序
reverse:将现有顺序逆向
排序规则:排序规则可同时使用如:sort(Array.CASEINSENSITIVE | Array.DESCENDING)
Array.CASEINSENSITIVE:不区分大小写
Array.DESCENDING:降序排序
Array.UNIQUESORT:如果元素都是唯一,不存在重复就进行排序,否则不排序
Array.RETURNINDEXEDARRAY:将排序后的元素的新顺序返回,但不修改原来的数组
Array.NUMERIC:按照数字大小排序
复杂排序:
arr.sortOn("age", Array.NUMERIC); //"age"为元素的属性,将使用age来排序
多维数组:
var arr:Array = new Array();
arr:push(["1","2"]);
访问:arr[0][0]
类型检测和转换
类型检测:
typeof 对象:如果是由用户的类产生的对象,一律返回object。只能对基本类型检测。
数据类型 结果 数据类型 结果
Array object object object
Boolean boolean String string
Function function uint number
int number XML xml
Number number XMLList xml
对象 is 类型:对对象的类型进行精确判断。如果对象是类型返回true,否则返回false。
类型转换:
隐式转换:大部分由flash player 来完成,如:undefined 会自动转为null
显示转换:通过编写代码来完成:类型(对象) ,也可以通过这样转换:对象 as 类型 ,如果成功返回对象转换后的值,否则返回null,不会引发异常。
控制程序的流程
选择语句
if 流程控制:
if(条件表达式){
//代码块
}else{
//代码块
}eles if(条件表达式){
//代码块
}
switch 流程控制:
switch(条件表达式){
case 值1:
//代码块
break;
case 值2:
//代码块
break;
.....
default:
//当上面的值都不匹配执行 default 里面的语句。
}
循环语句
for 循环:
for(表达式; 条件表达式; 表达式){
//代码块
}
for...in 循环 : 遍历对象的属性名
for(var 属性名 in 对象){
//对象[属性名]
}
for each...in 循环: 遍历对象的属性值
for each(var 属性值 in 对象){
//这里可以直接使用属性值
}
while 循环:
while(条件表达式){
//代码块
}
do...while 循环:
do{
//代码块
}while(条件表达式)
跳转语句
break:用来从当前的循环体中跳出,结束循环
continue:结束本次循环,继续下次循环。
return:结束函数的运行,返回。
发表评论
-
flex和java交互实现实现无限接树形结构
2009-07-30 18:30 1733数据库表(Category)的设计为: id p ... -
Flex与Javascript互相通信
2009-07-27 14:55 2457Flex与Javascript互相通信。(1):在Flex中有 ... -
关于一篇Flex和JSON结合使用的好文章
2009-07-19 23:42 2353今天无意中发现了一篇好文章(InfoQ)有关FLex和JSON ... -
flex有用网站学习
2009-07-18 10:42 2308这篇文章详细讲述了Alert组件 一步一步学Flex系列--- ... -
完成了flex和java结合的完整的一个例子
2009-07-17 00:13 2830通过做这个例子学到了很多,以前也做过这样的例子。都是做一遍没怎 ... -
Flex中提交Servlet后返回xml乱码的处理
2009-07-14 22:35 1869郁闷了好半天。为什么我从as中提交给servlet后,serv ... -
flex中endpoint的作用是什么?
2009-04-16 10:43 5954endpoint <channel-definitio ... -
用flex如何显示数字时钟
2009-03-30 18:01 2030刚好今天做到这一块, ... -
监测网络状态,离线/在线应用程序的实现
2009-03-29 17:07 2526AIR与Flex web应用的另一区别在于可以动态监测网络状态 ... -
本地文件(XML文件)的操作(1)
2009-03-29 17:06 1430买了战争机器2,写完教程准备杀到睡觉,现在先做第一步,写教程。 ... -
创建多窗口以及弹出窗口与父窗口的通讯
2009-03-29 17:05 2243今天说一下AIR中的window, ... -
在Flex builder3 中创建、发布AIR程序以及 AIR程序的安装运行
2009-03-29 17:03 4040这篇教程算是AIR的 Hello world,写给那些知道一 ... -
如何使DataGrid中某一列变为手型
2009-03-24 15:57 769可以使用linkButton,看代码吧 <mx ... -
神奇的DataGrid
2009-03-24 15:55 1981创建固定表头、表格体滚动的DataGrid http://de ... -
flex 中的restrict详解
2009-03-24 11:28 4531除 .$ ^ { [ ( | ) * + ? \ 外,其他字符 ... -
FLEX问题总汇
2009-03-21 23:23 1273希望能够帮助一些新人对flex的一些基本理解.1:flex是否 ... -
比较好的flex站点
2009-03-10 22:57 1340一、国外站点 1.资源 类Adobe Flex 2 Compo ... -
flex相关的一些资料
2009-02-17 22:50 1598Flex SDK 3.1 是一个Flex SDK里程碑式的版本 ... -
flex学习的好地方
2009-01-23 10:35 1117http://examples.adobe.com/flex3 ...
相关推荐
1. **编程基础语法**:Flex是基于ActionScript语言,它是一种基于ECMAScript(JavaScript的标准化版本)的面向对象语言。基础语法包括变量声明、数据类型、运算符、函数定义和调用等。变量可以声明为动态或静态,...
关于Flex编程基础,你需要掌握ActionScript,这是Flex应用的主要编程语言。ActionScript基于ECMAScript,与JavaScript类似,但扩展了更多面向对象的特性。学习变量、数据类型、控制结构、函数以及类的概念是至关重要...
Flex编程指南可能详细阐述了Flex开发过程中的核心概念和技术,如ActionScript 3.0语法、MXML组件模型、数据服务集成、移动应用开发等方面,帮助开发者掌握Flex编程的基础和高级技巧。 4. **client_server_...
接着,它会深入讲解Flex编程基础,包括ActionScript语言的关键概念,如变量、数据类型、控制结构以及面向对象编程。此外,还会详细介绍MXML,这是Flex中用于界面布局和组件声明的标记语言。 在Flex组件库的学习中,...
学习和实践这个主题,你需要具备Flex编程基础,了解ArcGIS for Flex API,以及对WMTS服务的工作原理有基本认识。通过深入理解和实践,你将能够创建出具有专业地图功能的Web应用,让用户在你的平台上便捷地访问和使用...
1. Flex编程基础:了解ActionScript语言和MXML标记语言的使用。 2. Flex组件模型:研究如何自定义和使用Flex提供的UI组件,如播放按钮、进度条等。 3. 媒体处理:学习如何加载、播放和控制多媒体文件,可能涉及到FLV...
#### 三、Flex编程基础 - **开发环境配置**: - 安装JDK,并设置环境变量。 - 解压Eclipse,并根据需要安装额外插件。 - 安装Flex Builder插件至Eclipse。 - 安装Tomcat,并配置Eclipse中的Tomcat服务器。 - ...
3. Flex编程基础: 在Flex中,基本的绘图操作是通过Flash的图形类(如Shape、Sprite等)实现的。军标绘制通常涉及到路径绘制、填充和描边等操作,需要熟悉相关图形API。此外,Flex中的事件监听和处理也是实现用户...
本文将详细讲解如何使用Flex来实现这一功能,主要涉及的知识点包括Flex编程基础、ActionScript语言以及字符串处理技巧。 首先,我们需要了解Flex的基础架构。Flex是基于MXML和ActionScript两种语言的,MXML用于描述...
在深入学习和使用这个项目时,你需要了解Flex编程基础,包括MXML和ActionScript,还要熟悉.NET Framework及C#或VB.NET编程。同时,理解Remoting的概念以及FluorineFX的工作原理也是至关重要的。对于视频处理和网络...
#### 四、Flex编程基础 在Flex开发中,除了掌握基本的环境搭建和项目创建外,还需要了解以下几点编程基础: 1. **MXML**:MXML是Flex的标记语言,用于定义用户界面。它类似于HTML,但更加灵活和强大。 2. **...
1. **Flex编程基础**:Flex是基于ActionScript语言和MXML标记语言的,ActionScript是基于ECMAScript的一个面向对象的语言,用于处理动态行为和交互逻辑;MXML则用于定义用户界面布局和组件结构。 2. **Flex SDK**:...
总的来说,Flex开发Google地图需要掌握Flex编程基础、ActionScript语言以及Google Maps API for Flash的使用。通过这些技术,开发者可以创建出功能强大的地图应用,如导航系统、地理信息系统或位置相关的服务。在...
6. **Flex编程基础**:学习Flex需要理解ActionScript的基础,这是一种基于ECMAScript的脚本语言,用于控制Flex应用的行为。同时,MXML是一种声明式语言,用于创建Flex界面组件。 7. **Flex与服务器通信**:Flex应用...
1. **Flex编程基础** Flex编程主要是使用MXML和ActionScript两种语言。MXML是一种声明式语言,用于描述用户界面的布局和组件,而ActionScript则是一种面向对象的脚本语言,负责处理应用程序的逻辑和交互。 2. **...
4. Flex编程基础 要充分利用这个项目,开发者需要具备基本的Flex编程知识,包括XML语言(MXML)、ActionScript 3.0以及Flex框架的理解。此外,对GIS的基本概念和术语,如坐标系统、图层、服务等,也是必不可少的。 ...
1. Flex编程基础:理解MX:RemoteObject标签的作用及其在Flex与Java集成中的核心地位。 2. BlazDS的使用:学习如何部署BlazDS war文件以及配置Flex项目以利用其数据服务功能。 3. MyEclipse集成开发环境的使用:掌握...
在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于...这需要开发者具备良好的Flex编程基础和组件定制能力。通过这个实践,你不仅可以提升对Flex组件使用的熟练度,还能增强对数据展示和用户交互设计的掌握。