Action Script 3.0  类和对象
ActionScript中的类和对象都是由属性、方法和事件组成。通过自带类或自定义类提供属性、方法和事件给对象,管理对象的数据块、决定对象可以执行哪些动作,以及执行动作的前后顺序。
在编写一些小的ActionScript脚本程序时,这些程序往往只包含几个彼此交互的对象,类的作用并不明显。随着程序作用域的不断扩大以及其必须管理的对象不断增加,类的作用会越来越重要。
1.自定义类与导入类
ActionScript的类分为两种,包括公共类和自定义类。其中,公共类(软件自带的类)有数百种,可应用于多种方面。而自定义类则通常由用户自行编写,以实现某方面的功能。
一个自定义类通常包括类名和类体,类体又包含类的属性和方法等几个部分。类的结构如图2-2所示。
图2-2  类的结构
在创建类时,首先需要声明类的命名空间,然后定义类的名称。在类体中,可以声明变量或实例化一些对象作为类的属性,还可以创建主函数和各种自定义函数作为类的方法。创建一个典型的类,结构如下所示。
package mypackage{
  //创建包,并为其命名
  public class simpleclass{
    //创建自定义类,并定义其命名空间
    public var bookname:String="Action Script 3.0编程特效实战技术解析";
    //声明对象,作为类的属性
    public function print():void{
      //创建自定义函数,做为类的方法
      trace("书名:"+bookname);
    }
  }
}
使用已创建的类,可以先将类实例化为对象,然后调用对象的属性和方法。例如,调用上面的类,其方法如下所示。
var simpleobject:simpleclass=new simpleclass();
//将类实例化为对象simpleobject
trace(simpleobject.bookname);
//调用类的属性bookname
在多数情况下,一个类应写在一个.as文件中,以防止多个类之间的变量名等互相干扰,也方便将自定义类进行分类管理。在其他.as文件中的类可以方便的导入到当前影片中,这就需要使用import语句。例如,导入按钮类,如下所示。
package {
  //创建包
  ls.Button;
  //导入按钮类
}
如需要导入某个文件夹中的所有类,可以使用通配符“*”。例如,导入所有Flash组件的类,如下所示。
package {
实例化类和实例化对象  //创建包
  ls.*
  //导入所有Flash组件
}
2.属性
属性是对象和类中包含的数据,是对象和类的性质。某个对象独有的属性即特征。类的作用是归纳和总结对象的特征,帮助程序通过这些特征来控制和调用对象。典型的属性如下所示。
public class map extends Sprite{
  //创建自定义类
  public var circle:bitmapData=new bitmapData();
  //将对象实例化
  lor = 0xffffffff;//对象圆的颜为白
  }
}
在上面的代码中,map是一个自定义类,变量circle即对象的名称。color即对象的属性,而0xffffffff是属性的属性值。在对象名称和属性之间的点“.”是一种特殊的运算符,其用于指示对象的属性。
在ActionScript中,一个对象可以拥有多个属性,几个对象也可以拥有一个或多个共同的属性。类的属性可由对象继承。
3.方法
方法是指可以由对象执行的操作。大部分类都有固定的几种方法,通过类调用的对象将继承这些方法。例如,在Flash中使用时间轴上的关键帧和补间制作的影片剪辑,可以通过类MovieClip的各种方法来控制,如表2-1所示。
表2-1  类MovieClip的公共方法
方法
说明
movieclip()
创建新的movieclip实例
gotoAndPlay (frame:Object, scene:String = null):void
从指定帧开始播放swf影片
gotoAndStop(frame:Object, scene:String = null):void
将播放头移到影片剪辑的指定帧并停在那里
nextFrame():void
将播放头转到下一帧并停止
nextScene():void
将播放头移动到 MovieClip 实例的下一场景
play():void
在影片剪辑的时间轴中移动播放头
prevFrame():void
将播放头转到前一帧并停止
prevScene():void
将播放头移动到 MovieClip 实例的前一场景
stop():void
停止影片剪辑中的播放头
除了这些方法外,类MovieClip还自其他的类中继承了一些方法。在swf影片中,可以使用类MovieClip的方法控制影片剪辑的播放。例如,控制名为clip01的剪辑播放,其代码如下所示。
clip01.play();
在使用类的方法时,还可以为方法添加参数。例如,在swf影片中通过ActionScript控制名为clip02的剪辑播放头跳转到时间轴的第10帧,其代码如下所示。
AndPlay(10);
在上面的代码中,clip02是影片剪辑的名称,gotoAndPlay则是类MovieClip的方法,括号里的10是方法的参数。
4.事件
在所有高级编程语言中,事件都是确定计算机执行哪些指令以及何时执行指令的机制。在ActionScript中也同样如此,事件决定了类和对象使用哪种方法,以及使用方法的时间。事件是ActionScript可以识别并响应的事情。
事件是实现交互的必要条件。指定为响应特定事件而应执行的某些动作的技术被称做事件处理。在ActionScript中,事件的处理包含3个要素。
事件源
事件源即发生事件的对象。例如,影片的浏览者单击了某个按钮,那么这个按钮就是事件源。事件源必须是AVM2虚拟机可监测到的对象。
事件
事件是对象发生的事情。例如,影片的浏览者在输入文本组件中输入了一个字母a,则输入字母a这个行为就是事件。许多对象都会发生多个事件,发生的事件必须能被AVM2虚拟机所识别。
响应
当AVM2虚拟机识别了监测的事件源发生的事件,通常会根据程序执行一些操作。这个操作被称做事件的响应。处理事件,即响应事件。例如,当用户输入a和b两个字母,并按了一个按钮,AVM2虚拟机根据代码的要求,输出字符串变量ab。
例如,在影片中插入了一个按钮,并设置按钮的实例名称为btn,则可以添加一些代码,实现对单击按钮事件的监听以及响应,如下所示。
btn.addEventListener(MouseEvent.CLICK,MouseClick);//监听实例名称为btn的按钮的鼠标单击事件
function MouseClick(event:MouseEvent){//当实例名称为btn的按钮被鼠标单击时,执行自定义函数MouseClick。
    trace("Now you click me");//事件的响应为输出文本“Now you click me”
}
在上面的代码中,对象btn即事件源,MouseClick(鼠标单击)即事件,而trace("Now you Click me")则是对事件的响应。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。