加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex学习笔记12——as学习

发布时间:2020-12-15 01:18:21 所属栏目:百科 来源:网络整理
导读:? ActionScript的特征 1.? 运行时,能识别出动态类型转换的错误 2.? 异常处理机制 3.? 正则表达式 4.? 新的primitive type: Number(double和float精度数字),int(32位整数), unit(32位无符号整数,用于RGBcolor,字节数) 面向对象语法 ?????? 只记录了
?

ActionScript的特征

1.? 运行时,能识别出动态类型转换的错误

2.? 异常处理机制

3.? 正则表达式

4.? 新的primitive type: Number(double和float精度数字),int(32位整数), unit(32位无符号整数,用于RGBcolor,字节数)

面向对象语法

?????? 只记录了与java不一样的地方

?????? 类有四种修饰符public,internal(类似于friendly) dynamic(后期可添加函数,比较少用)和final

?????? 在As文件中,package中只能 有一个类,不在package中的类为从属类,不能为外部访问

?????? 子类不能定义父类中已存在的非private属性,会提示编译错误。覆盖父类方法,前面加上override,调用父类被覆盖方法:super.fun()

?????? 接口中不能定义变量或常量,只能定义方法,而且方法没有修饰符,实现类中方法声明为public

?????? var top:* 表示top变量类型不确定

数据类型

?????? Primitive类型: Boolean? int?? Null?? Number? String? unit? void

?????????? int代表32位有符号的证书,unit为无符号的32位整数, Number为64位浮点数。选择原则:如果只处理整数,优先选择int和颜色相关的选择unit,有可能是小数的使用Number,int发生溢出的整数也使用Number。使用unit要保证其不小于0.

?????? 复合数据类型:Object? Array? Date Error?? Function?? RegExp?? XML? XMLList

?????? 数字计算除了 + - * / %,还有Math类

?????? 定义数组? var typeArray:Array=[],可以为数组指定排序规则和方向,如 nums.sort(Array.NUMERIC|Array.DESCENDING), sortON可以对多维数组或集合元素为对象进行排序? students.sortOn(“age”,Array.NUMERIC)

?????? 类型监测和转换:? 监测? 对象 is 类型??? 强制转换? 类型(对象名)

??? 常量使用const定义 :? public const STR:String="abc";

??? XML类型,变量名或id代表根节点,使用时应该是 id.nodes而不是id.root.nodes。对于从多个节点得到数组要指定到节点本身,而不是其父节点

控制程序流程

?????? Switch(条件表达式)? 可以为任意类型,只要值和case相同

??????? 循环? for( in ) 对数组和对象循环,循环变量为序号;? for each( in ) 对数组和对象循环,循环变量为值

?????? Break在多重循环中,只跳出一从循环,同java中

基本内容

????类型运算:? typeof 19?? 以字符串形式返回类型名;? 19 is Number? 判断是否为所属类型;? 19 as int 转换为int类型,失败时返回null int(10)也能转换类型,当失败时抛出异常

ActionScript的函数

?? AVM1和AVM2是不同SWF版本的虚拟机,两者之间如果要通信,需要调用 flash.net.LocalConnection进行

???函数的默认值?? function fun(s:String="abc"):void, 设定不等类型变量 var a:*

?? 函数参数个数不定? function fun(...rest):void? rest为一个数组,要访问参数,可以使用rest[i].

?? 可以使用函数指针,如 var fun:Function=fun1? fun()进行调用。可实现1)根据不同条件调用不同函数 2)使用Array和函数对象实现函数队列。

?? 枚举的实现(几个相关联的状态): final class StateEnum {? public static const STATE1:String}

没用过的组件

?? Application ControlBar可以作为工具栏

?? Application中,当layout为absolute时,horizontalAlign和VerticalAlign不起作用。

?? 属性: paddingLeft/Right/Bottom/Top 代表上下左右的边距, x和y代表左上角的位置和width,height完成定位; top和left完成定位

?? Panel: 使用ControlBar在Panel底部实现按钮组

? 实现Tab有两种方式,TabNavigator和TabBar+ViewStack实现。TabBar可以和任何组件一起使用,而不仅限于容器组件

??多个RadioButton通过指定groupName成为一组

? ButtonBar:当不需要记录用户状态时,而ToggleButtonBar会在按钮组显示当前状态。

? 加载外部内容: Image加载图片; swf loader加载swf文件和图片? videoDisplay播放flv视频文件

第7章: 命名空间

? 命名空间相当于类的静态属性,为程序提供语境描述,如电话::打(),球类:打()

? 命名空间的使用:

?1. 定义命名空间,当希望namespace被不同包内的类访问时,可将其定义到独立的as中,在as中public namespace mx_internal; ?当希望在一个类中使用命名空间切换不同版本的方法和属性,该命名空间可在类中定义。定义格式相同。

2. 应用命名空间,如 mx_internal function (即将public替换) 如果该命名空间在类外定义,则需要在类定义前加上 use namespace mx_internal,如:

? Package A {

????? Use namespace mx_internal;

????? Public class Foo

}

3. 引用命名空间,在要用到的地方 A.mx_internal::fun();

复合和继承,抽象类和接口

类成员有四种修饰符: public? internal? dynamic(实现运行时添加类和属性的方法? dynamic class Foo)和final。 类成员可以有:public,private,internal,protected

as文件的组织结构: package 中包含一个和文件名相同的public类,在package外有几个不是public的类,作为辅助类

Composition中双方对象同时创建,同时消亡,即“同生共死”;Aggregation中被聚合和聚合对象独立存在,即“各安天命”

子类不能继承父类静态成员,但可以调用,如Base.Hello();

抽象类:在as中没有abstract关键字,需要将类命名为以Abstract开头,提醒自己不要实例化;此外如果子类都在同一模块中,将父类的访问控制设为internal;如果父类和子类都对外部可见,当要将抽象类实例化时自动抛出异常。

??子类不能定义父类存在的非private属性,重载函数前需要有override,调用父类覆盖方法? super.fun()

接口不可以定义变量和常量,只能定义方法,并且方法不能有修饰符。实现类中方法声明为public

ActionScript的核心类和全局函数

常用核心类:

Math(用于数学运算)

异常类: Error? ArgumentError? DefinitionError? EvalError? RangeError? ReferenceError?? SecurityError? SyntaxError? TypeError?? URIError? verifyError

全局函数:

URL编码解码工具 decodeURI? encodeURI

URL格式解码编码? escape? unescape

判值函数? isFinite(是否无穷大)? isNaN(是否数字)? isXMLName

字符串转为数字? parseFloat? parseInt

数组

数组的定义??

var array:Array=[1,2,3],?? <mx:Array id="array">?

多维数组,如var arr:Array=[[1,[4,5]],各维长度可以不同。

基本操作:

查找 indexOf? lastIndexOf

在数组首尾增加 (push? unshift), 删除(pop? shift) 可以一次性增加多个元素

??? 数组.push(元素1,元素2,元素3)

数组中加入或删除 splice? 删除点索引可以为负数,表示从尾部倒数的位置

?????? 从某位置开始,删除指定数目元素,并插入新元素

??????? 数组.splice(删除点的索引,要删除的元素数目,新元素1,新元素2);

?????? 删除某位置后的元素

????????????? 数组.splice(删除点的索引,要删除的元素数目)

?????? 某位置后插入新的元素

????????????? 数组.splice(删除点索引,新元素1,新元素2)

获取部分元素? slice(不改变原数组内容)

将多个元素或数组拼成新的数组? concate

数组拷贝:

?????? 浅拷贝? Array.slice()

?????? 深拷贝??? var? fooA:ByteArray()=new ByteArray();? fooA.wirteObject(array1);

???????????????????? ? fooA.position=0;? var bar:Array=fooA.readObject() as Array

逆序?? reverse()

数组的排序?

array.sort(标识)。标识有五种,可以组合使用,如Array.UNIQUESORT,DESCENDING,CaseInsensitive,returnIndexedArray,numeric。

sortOn(){对多维数组或元素对象排序}? ,students.sortOn("age",Array.NUMERIC);

sort(比较函数),格式为? function 函数名(para1:类型,para2:类型):int 返回值为-1,1,0

操作数组每个元素

条件

说明

备注

遍历操作

ForEach(callBack:Function,object:*=null):void

对数组进行遍历,回调函数不返回值

过滤器

Filter(callBack:Function,object:*=null):Array

类似于apache.common中的select, 回调函数返回单个新数组元素

映射器

Map(callBack:Function,object:*=null):Array

类似于common中的transform,回调函数返回单个新数组元素

有一个满足为真

Some(callBack:Function,object:*=null):Boolean

只要有一个元素能让回调函数返回true,则some返回true,否则为false。回调函数返回单个元素比较结果

全部满足为真

every(callBack:Function,object:*=null):Boolean

必须所有元素能让回调函数返回true,则every返回true,否则为false。回调函数返回单个元素比较结果

?????? 回调函数格式 function 函数名(元素:类型,索引:int,数组对象:Array):返回值 {}

String

字符函数

?????? charAt()? charCodeAt() [返回unicode值]? fromCharCode()

java中的StringBuilder酒使用+代替

运算符? + +=? <? <=? >? >=(比较从左到右)

字符串操作

?????? 查找? indexOf??? lastIndexOf(参数为普通字符串)?? search(参数为正则表达式)

?????? 返回字串?? substring和slice根据起点和终点来提取的, substr由起点和长度决定

?????? 分割字串?? split(参数可以为正则表达式)? var delimeter:RegExp=//d+/

?????? 匹配?????? match(参数可以为正则表达式)?

?????? 替换?????? replace

?????? 大小写转换? toLowerCase? toUpperCase

?????? 工具类?? mx.utils.StringUtil?

正则表达式的结合

?????? Search() 返回第一次匹配的索引位置;? match() 返回匹配的字符串,如有g,则返回匹配的字符串数组。 Replace 正则表达式进行查找替换

XML

数据结构

????? 有大段文本,尤其是包含空格和特殊字符使用子元素,否则使用属性,减少层次

常用的数据类型:

???? XML: 只有一个根节点,支持实时修改和解析数据

?????????????? Var xml:XML=<item text=’a’/>

?????????????? 在XML中可用已有变量直接构成XML,使用{}括起来

???? XMLList:? 相当于xml的数组,没有太强大的API支持

???? XMLListCollection: 实现对XMLList的操作

修改运算

?????? Item.toXMLString输出节点;? item.toString输出text

?????? 只有xml可以修改,而xmllist会发生运行时错误

?????? Item.@text=”b” 修改或新建属性

?????? Item.child=new XML() //添加一空白子节点

?????? Item.child=<item text=”b”/>?

??? Item.child=”china”? //新建子节点 <child>china</child>

?????? Delete 删除子元素或属性

查询运算

?????? .. 所有子元素

?????? * king.site.@*.toXMLString()? 查找site的所有属性

?????? 使用表达式

????????????? healths.floor.(@id==floor.@id)

?????? 使用正则表达式,即在查询表达式中使用match

????????????? King.site.(pageview.match(/^5d+/)) 查找子元素文本为5开头数字的site元素

?????? 使用自定义函数

??????????? King.site.(check(pageview));

??????????? Function check(t:*):Boolean {} //t为传入的 xml或xmllist

网络通信

?????? 可使用URL Request读取文件,URLLoaderDataFormat.text为文本文件;URLLoaderDataFormat.variables为properties文件,在Complete中使用for遍历loader.data;URLLoaderDataFormat.binary为二进制文件, event.target.data as ByteArray

?????? 监控加载进度? ProgressEvent的两个属性 bytesLoader? bytesTotal

?????? 打开网址,使用flash.net.navigateToURL

AS视觉编程

?????? Stage是最根本的容器,包括当前swf,一个应用程序只能有一个

?????? 只有addChild加入的内容才会进行渲染

?????? <mx:Image> 将图片显示出来,其source可以为url,或者为BitMap对象。 BitMap表示位图对象, BitMapData得到BitMap的像素信息,并通过函数 draw()可以完成形变处理。Shape为矢量图。Sprite为轻量级的容器,是首选。 MovieClip通常由flash创建工具绘制

?????? 所有的显示对象是UIComponent的子类或实现IUIComponent接口

DisplayObject类与矢量图、位图

?????? DisplayObject的可视属性有 x,y,width,scalex,scaley(值为后来/原有的)? mouseX? mouseY(当前属性与(x,y)的距离)?? rotation(绕轴点顺时针旋转的角度)

?????? Shape创建步骤:

????????????? Var circle:Shape=new Shape();

????????????? Circle.graphics.beginFill()?? //设置线头样式,填色

????????????? Circle.graphics.drawCircle? //移动画图点,画线或绘制图形

????????????? Circle.graphics.endFill();?? //结束填色

?????? 位图: Bitmap和BitmapData

?????? 遮罩: 普通遮罩和alpha通道遮罩? DisplayObject.setMask() 进行

?????? 文本:捕获带超链接的文本 TextField.htmlText=”” 字符串中的超链接必须以event:开头

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读