【前言】
虽然AS从AS1.0开始就标榜面向对象,但其实,只有到了AS3.0时代,才是真正的面向对象编程。之前的AS1和AS2都是面向过程的。两者的区别:
1、面向过程:
将要实现的步骤一步一步的罗列出来,代码执行时总是有条不紊的从头到尾挨着运行
2、面向对象:
整个代码被分出数段,各段代码都有自己单独的作用。在需要的时候直接调用某段代码【不是机械的从头到尾逐一运行代码】
当然,AS2也可以编写面向对象的程序,但是本教程从头到尾使用的却都是面向过程的思路编程【因为,如果要面向对象,就必须使用外部类,而AS2的外部类,学习起来很郁闷,远不如AS3的灵活、强大】。
而本节课只是讨论了一下对象和类的区别
一、对象
1、初步认识对象
从现实世界看,世界上所有的事物都是对象。大到宇宙,小到分子、原子,都可以看成是对象。可以这样说,对象就是现实世界中某个实际存在着的事物。如一棵树,一朵花,一辆车,一本书。
在flash软件内, 对象就是我们在flash中能看到的一切东西(舞台是一个对象;时间轴、影片剪辑、按钮、文本、位图都是对象)。
2、给对象下定义
生活中,某一个人是一个对象。ta是男人还是女人,皮肤白还是黑,身体是否健康,这都是这个人的状态特征。
学习,工作,作饭,洗衣是这个人的行为。身份证是这个唯一的标识。
在FLASH中,某一个影片剪辑是一个对象。它的宽度、高度、透明度、颜色、坐标等状态特征(这些我们管它叫作对象的属性)
这个影片剪辑又有播放和停止 , 可以被拖动, 可以添加子对象,可以设置它们的深度等行为 (这些我们把它叫作对象的方法)
而每个对象被创建时在内存中储存的地址,就是它们唯一的标识,表现为对该对象的引用。
因此,flash软件内,对象就是一切有具体状态、行为和唯一标识的数数据集合
3、面向对象编程
ActionScript是一种面向对象的编程语言。通常我们会认为编程就是连续地写一系列指令,计算机按顺序地执行它。 而面向对象编程则是将程序分成各个块,分散到对象上。上节课我们己说过:在ActionScript2.0中我们可以将代码写在关键帧(包括空白关键帧)、影片剪辑、按钮元件上。即便是将程序完全写在关键帧上,它也必须要对象的事件驱动才能执行。
二、类
在理解了面向对象编程后,我们必需要对一些概念有所了解。
举个例子:在我们的家中,所有的东西都可以叫做对象。比如,电视机、电冰箱、书桌、衣柜等等。
大家很容易发现,这些东西总有那么几个有相似之处。比如:电视机、电冰箱都需要用电;书桌、衣柜都是用木头做成的.。。。。。。。
我们便把家里的东西分成了几类,并为每一类东西取上一个名字。比如,电器类、木器类等。这样我们就理解了另一个重要的概念----"类".
类是具有相同属性和方法的一组对象的集合。
三、事件:
1、神马是事件
在面向对象的编程中,并不是将代码按顺序交给计算机去执行。上面己经谈到了,代码被分散到了对象上。那么要计算机执行这些代码就需要事件来触发。
通俗地讲就是:当某件事情发生时就去做一些事情。(这个某件发生的事情就是事件)
在flash中,常常会放上一个按钮。比如“开始”按钮。程序设计者可能是这样的思路:当按钮按下时就播放动画。那么“当按钮按下时”就是按钮对象的事件。
2、事件的书写方法
在ActionScript2.O中,代码可以写在关键帧和元件上。那么事件也有两种书写的方式,不过事件在关健帧中和元件中的书写方法是不一样的。下面是书写的格式
事件在关健帧中的写法:
元件名称.事件名称 = function(){
要执行的语句
....
}
事件在元件上的写法:
on(事件名称){
要执行的语句
.....
}
3、事件举例【初学者可能看不懂,不要紧,本例只是让你对事件有一个模糊认识。后面的课程中我们还会详解】
A、事件在关健帧中的写法:
(1)制作按钮:
在舞台上绘制一个圆角矩形。选中它,按F8键转换为按钮元件,然后打开属性面板,设置实例名为play_btn
(2)新建一个图层2,使用椭圆工具绘制一个圆,然后在35帧按F6键插入关键帧,移动圆的位置。制作“形状补间动画”,让圆从左到右移动。
(3)让按钮始终在动画播放时显示:
单击图层1(按钮就在这个图层里),在第35帧处按F5键插入帧
(4)因为影片测试时会自动重复播放,所以,我们要实现单击按钮再播放的效果,就必须事先加一个停止播放的代码。这个代码必须加在帧上(如果加在按钮上,则必须单击按钮时才能让影片不播放,显然与我们的初衷不符)。
新建一个图层,命名为as,(为了提高设计的效率,我们通常将含有代码的帧都放在一个新的图层里,并将图层命名为as)这不是必须的,你完全可以给它取个其它名字。
单击第一帧,按F9键打开动作面板,输入下面代码:
stop()
这是让动画停止播放的代码。
(5)现在要实现点击按钮时播放图层2中的补间动画,则在stop()下面一行中加入下面的命令:
play_btn.onRelease = function() {
play();
};
测试影片,当点击按钮后,图层2中的补间动画就开始播放了。
回到场景中,可以看到,在as图层时间轴的第1帧上,有一个a字,这说明在这一帧上有代码。
B、事件在元件上的写法:
(1)将帧动作只保留第一行的stop() 其它的代码全部删除。
(2)然后,用选择工具单击舞台上的按钮元件,按F9键打开"动作面板",输入如下代码:
on(release){
Play();
}
测试影片,得到相同的效果。
4、事件的两种书写方法总结
(1)在帧动作面板中同元件动作面板中事件的名称不一样,如上例,在帧动作中是:onRelease
而在元件上则是:release
注意大小写!
(2)在帧上写事件,必须给对象设置一个实例名(给按钮对象设置了实例名play_btn);在元件上写事件无需实例名