Flex学习笔记12——as学习

来源:互联网 发布:怎样用手机制造软件 编辑:程序博客网 时间:2024/05/01 17:10
 

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,2,3],[4,5]] ,各维长度可以不同。

基本操作:

查找 indexOf  lastIndexOf

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

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

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

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

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

       删除某位置后的元素

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

       某位置后插入新的元素

              数组.splice(删除点索引,0, 新元素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(/^5\d+/)) 查找子元素文本为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:开头
原创粉丝点击