2023年12月14日发(作者:)
ActionScription基本语法知识:
(1) 数据类型:基元数据类型和复杂数据类型
1.基元数据类型:数字,文本,条件真假,这是语言的基本构成单元:基本数据类型一共有:Boolean 、int、Number、String、unit。
2.复杂数据类型:是相对于基元数据类型而言的。简单的复杂数据类型往往是由一些基元数据类型构成的。更高级一点的复杂数据类型,其组成元素也是复杂数据类型。
(2)变量的声明和使用
1.声明变量的语法:
声明变量的格式如下:
var 变量名:数据类型; var 变量名:数据类型=值;
var 是一个关键字,用来声明变量。
2.变量命名规则:
1.变量使用有含义的英文单词作为变量名
2.变量名采用骆驼命名法
3.变量命名符合"min-length&&max-information"原则
所谓"min-length&&max-information"原则,是指变量名的长度应当越短越好,对变量代表的含义描述的越清晰越好。
4.尽量避免变量名中出现数字符号
值类型和引用类型的区别:
值类型直接存储值,而引用类型存储引用,指向要操作的对象。
值类型的数据不用new关键字来创建;必须使用new关键字创建的一定不是值类型。
在ActionScript3中,值类型变量持有的是指向值类型数据的引用;引用类型变量持有的是指向引用类型数据的引用。不论值类型数据还是引用类型数据,其实质都是对象。
使用const声明常量
使用cons关键字,用于声明常量,所谓常量,就是恒定不变的数值。我们可以把它看成一种特殊的变量,这种变量只能在声明时 赋值,而且已经赋值,就不能再更改。
使用const声明变量的语法,与使用var来声明变量的语法完全一样。只不过将var替换成const即可。
const foo:int=100;
基础数据类型:
基础数据类型并不是基元(基本)数据类型
基础数据类型包含:
1.所有的基元数据类型:Boolean.、int、uint、Number、String
2.两种复杂数据类型:Array、Object
数字:int、uint、Number
int和uint是整数值,专门用来处理整数。Number用来处理浮点数。
能使用整数值时优先使用int和uint。整数值有正负之分时,请 使用int。只处理正整数,优先使用uint。处理和颜色相关的数值时,使用uint。碰到或可能碰到小数点时用Number。
数组:Array
数组是以非零整数位索引的悉数数组,不支持类型化数组。
运算符、表达式及运用
赋值运算符:=
递增运算符:++
递减运算符:--
算法赋值运算符:+= ,-= ,*= ,%= ,等于运算符(==),不等于运算符(!=),全等运算符(===),不全等运算符(!==)
全等运算符和等于运算符的不同在于,全等运算符不执行类型转换,这就意味着,不同类型变量之间的比较用全等运算符一定会返回false。唯一的例外,就是全等运算符对于数值类型一视 同仁,所以,如果int、uint、Number类型数值相同,那么全等运算符也会认为相同。
关系运算符:<, <=, >, >=
三元运算符:(?:):(条件表达式)?(表达式2):(表达式3)
算术运算符:+ - * /
运算符的本质:运算符本身是一种特殊的函数,运算对象就是它的参数,运算结果就是它的返回值。而每一个表达式都是单个运算符函数的组合,表达式可以看成一个组合成的特殊函数,表达式的值也就是该函数的返回值。
typeof is as:
typeof是用字符串形式返回对象的类型。
is用来判断一个对象是否属于一种类型,返回布尔值。
as与is格式一致,内容不同:如果一个对象属于一种类型,那么as返回这个对象;否则返回null。
in:in关键字用来判断一个对象是否作为另一个对象的键或 索引,存在返回TRUE,不存在返回FALSE。
ActionScription3的保留字:
所谓保留字,意思就是只留给ActionScript3语言用的英文单词。用户不能用这些保留字来做标识符。不能用作标识符,意味着不能用这些词命名变量、实例、自定义类。如果违反这个原则,将导致编译出错。
判断和循环:
if……else…… do-while
for……each in break
while for……
continue
for……in
switch
for……in与for……each in的区别:for…in的枚举的变量代表的是键,必须要通过数组访问福加上这个键值,才能访问到集合成员。而for each…in的枚举变量k则直接代表集合的成员。
面向对象:
ActionScription3中的函数及高级实用技巧:
函数的准确定义是:函数(function)是执行特定任务并可以在程序中重用的代码块。
ActionScript3中函数分为两类:方法(Method)和函数闭包(Function closures)。如果将函数定义为类定义的一部分或者将它与某个对象绑定,则该函数成为方法。
函数有两种定义方式:一种是非常熟悉的函数语句(Function
statement)声明法:另一种是Actionscript特有的函数表达式(Function
expression)声明法。
函数语句定义法:
function 函数句(参数1:参数类型,参数2:参数类型):返回值类型{
//函数内部语句
}
函数表达式定义法:
函数表达式定义法是ActionScript特有的一种定义方式。定义 格式如下:
var 函数名:Function=function (参数1:参数类型,参数2:参数类型...):返回值类型{
//函数内部语句
}
两种定义法的区别和选择:
这两种定义法定义的函数在一般使用中不会感觉到有什么不同。平时,应当尽量使用函数语句定义法。这种定义方式更加标准,也很简捷。
在定义位置上,函数语句定义法定义的函数在编译时会被提升(hoisting)到最前面,而函数表达式定义法只能先定义在使用,只有定义后面的语句才可以成功调用。
除此以外,函数语句定义法和函数表达式定义法还体现在函数体中this关键字的记忆上,使用函数语句定义法,则this关键字牢牢指向当前函数定义的域;而若使用函数表达式定 义法,则随着函数附着的对象不同,this关键字也随之改变。
参数:
Actionscript3中队函数参数增加了一下限制,增加的限制在于,现在的函数一旦定义好参数类型和个数,那么在调用时参数个数和类型必须相符,否则编译报错。新增的功能:参数默认值或者...(rest)关键字。
按值还是按引用来传入参数
按值传入,那么参数对象会复制一份副本共函数内部操作,参数对象本身不会受影响;按引用传入,则不复制副本,函数内操作参数对象的引用,那么会改变参数对象的状态。
在ActionScript3中,所有的参数都是按引用传入的。只不过,基元数据类型是不变对象,传引用和传值的效果一样。所以,如果参数是基元数据类型,那么可以看成是 传值;如果参数不是基元数据类型,那么就是传引用。
设置默认参数:
格式如下:function(参数1:类型=默认值,参数2:默认值):返回类型{..................}
类和对象的概念
类和对象的使用
包(package)的概念
实例属性和实例方法的声明和使用
静态属性和静态方法:只有某个类绑定,不和任何的具体实例绑定。
使用静态属性部分实现Enumeration
使用final关键字避免类被继承而被改写
构造函数
动态类(dynamic)和密封类(sealed)
使用动态类的好处是比较灵活,在运行的时候可以额外的添加属性和方法,但缺点是性能不如密封类好,而且,编译的时候对动态类对象的检查宽松,不利于代码的维护。
this关键字:当前对象的引用
return关键字
方法重载:在ActionScript3中不支持方法重载,但我们可以用新增..."关键字来实现类似的行为。做法是:在方法的"()"中写入"...参数",比如"...someargs"。这时的someargs其实是一个数组,持有输入的所有参数。然后我们可以通过分析someargs的内容来判断执行不容分支,达到函数重载的效果。而欠缺的功能是,如果需要不同类型的返回值,就只能将方法返回类型设为"*",或者object,不能像其他支持重载的语言一样返回指定类型。
封装:又叫隐藏实现,具体的意思是将实现的细节隐藏起来,只将必要的功能借口对外公开了,使用这些代码单元的用户只知 道这些代码单元可以提供那些服务,却并不知道这些代码单元中的具体逻辑是怎样的。
几种访问修饰符的使用及含义:public protected private
internal
接口:
接口使用关键字interface,而非class
接口无法声明属性
接口的方法只声明特性而不做实现
接口只声明公有接口类,所有方法特性不允许更改
依惯例,接口命名以大写字母I开头
在类后使用关键字implements声明类实现
命名空间:使用命名空间的流程:定义命名空间、应用命名空间、引用命名空间。 命名空间有唯一性。
编译器只认uri,不认命名空间的名称。如果我们定义了两个不同名字的命名空间,却赋予了同样的uri值,那么编译器会将这两个命名空间看成同一个命名空间。编译器判断命名空间是否相同,就是看uri属性。
如何定义命名空间:
定义命名空间是第一步。将命名空间定义在什么地方,取决于你要怎样应用命名空间。如果你希望一个命名空间能呗不同包中的类文件访问到,那么通常会将这个命名空间定义到一个独立的.as文件中。这种定义法一般用于控制类的类成员对其他包中类的可见性。这是命名空间最常用的用法,也是最有用处的应用。如果只是希望在一个类中使用命名空间切换自己不同版本的方法和属性,那么可以将命名空间定义在类体中。
定义在独立的.as文件中:
命名空间定义在类中:
MXML文档:
应用程序:Applicaton
模块:Module
组件:Canvas
组件:
可视化组件:
容器(Containers)
UI控件(User interface controls)
非可视化组件:
数据组件(Data components):用于创建数据结构(如,数组和集合),以及进行远程过程调用
实用工具组件(Utility components):用于实现功能的组件。使用工具组件包括那些用来重复创建组件的组件以及创建组件之间数据绑定的组件等。
建立MXML交互:
MXML提供了两种创建交互的基本方法:事件处理和数据绑定。
使用ActionScript:
若想在flex中使用ActionScript,有4种放置代码方式可供选择:
标签内嵌式: 内嵌式ActionScript即在MXML标签内放置代码,内联式数据绑定意味着使用ActionScript的更多限制,因为他只能检测一个表达式。
标签嵌入:也可以在MXML标签中嵌套ActionScript代码,与你为属性嵌套值和为时间处理嵌套值一样,你须将代码置于CDATA
的脚本内:将代码置于MXML脚本只中。在 MXML文件中,MXML脚本以script元素形式展现。
Script类内:类是ActionScript中最完善高效的应用。虽然使用内联式代码与MXML脚本并无错误,但在ActionScript类放置ActionScript代码是更明智的做法。
MXML与ActionScript相互关系:
MXML功能强大,常用于创建用户界面。通常使用MXML布局远胜于使用ActionScript。ActionScript更适用于业务逻辑与数据模型。同时MXML与ActionScript亦非如此不同。实际上,MXML在编译是被译至ActionScript,MXML结构以ActionScript类来解释。
理解flex应用为何是结构化的:
Flex应用三大特性:系统管理器 预加载 应用
错误处理:处理同步错误:try
catch finally
处理异步错误:所有的异步错误均已事件形式展现,他们使用与标准事件相同的事件模型。
使用行为对象和动画效果:
一个行为对象,可以看作是触发器和动画效果的结合体。
一个动画就是一个行为对象,即一个动画实际上分为触发器和动画效果这两部分。
行为对象允许对一个触发器定义多个动画效果,当触发器被激活,这一系列的动画会按某种顺序运行。
行为对象的创建可以通过mxml和ActionScript两种方式来定义。
组件:
数据验证:
验证器基础:所有的验证器类型都继承自一个称为tor的基类型,所有的验证器类型都继承了validator类的基本功能和属性。
要创建一个验证器,必须至少指定两个属性:source和property.其中source是一个对象引用,指向要验证的对象,property是该对象的属性,该对象包含了要验证的数据。
处理验证事件:
验证器派发两种基本类型的事件:有效事件和无效事件。档验证器成功运行时,它派发一个有效事件,否则,它派发一个无效事件。处理invalid和valid事件。
Validate():validate()方法不仅仅运行验证,他也会返回一个validateResultEvent对象,该对象会告诉你验证是否成功。此对象的type属性值为valid或invalid。


发布评论