Action Script 3.0 基于时间的运动
- 格式:doc
- 大小:45.00 KB
- 文档页数:2
Action Script 3.0 实战海上升明月Flash软件可以制作各种简单补间动作的影片。
例如,制作海上升明月的Flash影片,其中制作月亮升起可以用补间动画来制作,而制作海水波浪则需要遮罩层与补间动画结合使用,如图1-30所示。
图1-30 海上升明月(1)在Flash中新建影片文件“moonraise.fla”,并将素材文件“海上升明月.psd”和“月亮.png”导入到影片的【库】中,如图1-31所示。
图1-31 导入素材文件(2)新建影片剪辑元件“大海”,将位图资源“大海”拖动到场景中,并更改图层名称为“海”,如图1-32所示。
图1-32 创建新影片剪辑元件(3)锁定图层“海”。
在元件中新建图层“海2”,再讲位图素材“大海”拖动到图层“海2”中,修改位图素材的高度为100,按Ctrl+B将其打散,如图1-33所示。
图1-33 修改素材高度(4)新建图层“波纹”,在波纹中绘制线条,并将线条转换为元件“波纹”,如图1-34所示。
图1-34 制作波纹(5)分别在3个图层的第100帧处按F5快捷键插入帧,并将“波纹”图层第100帧转换为关键帧。
分别设置“波纹”元件在第1帧和第100帧处的纵坐标为13,然后创建传统补间动画,如图1-35所示。
图1-35 创建关键帧(6)选中“波纹”图层,右击执行【创建传统补间动画】命令。
选中第50帧,按F6快捷键将其转换为关键帧。
在【属性】面板中设置元件的纵坐标为20,如图1-36所示。
图1-36 修改元件位置实现补间(7)锁定所有图层,右击“波纹”图层,执行【遮罩层】命令即可完成海水流动的动画制作,如图1-37所示。
图1-37 制作遮罩动画(8)新建影片剪辑元件“倒影”,将素材图像“月亮”拖动到舞台中,并按Ctrl+B组合键将素材打散,如图1-38所示。
图1-38 打散素材图像(9)用【选择工具】选择素材图像上半部分,将其删除,如图1-39所示。
图1-39 删除部分素材图像(10)在【时间轴】面板中第400帧处按F5快捷键,将其转换为关键帧。
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();//将类实例化为对象simpleobjecttrace(simpleobject.bookname);//调用类的属性bookname在多数情况下,一个类应写在一个.as文件中,以防止多个类之间的变量名等互相干扰,也方便将自定义类进行分类管理。
Action Script 3.0 匀速圆周运动物体沿圆周运动,如果在相等的时间里通过的圆弧长度都相等,这种运动叫做“匀速圆周运动”。
物体做匀速圆周运动时速度不变,但是速度方向随时发生变化,也就是说,加速度只改变速度的方向,而不会改变速度的大小。
通过正余弦函数可以方便地模拟匀速圆周运动的效果。
当物体进行匀速圆周运动时,x坐标等于角度的余弦值,而y坐标等于角度的正弦值:x = cos(角度) ×半径y = sin(角度) ×半径把上面的坐标加上圆的坐标,就可以直接计算出物体的坐标,所以不需要使用速度和加速度进行处理。
例如,在舞台中创建一个名称为“mc”的影片剪辑元件,然后根据圆的坐标,以及角度的余弦值和正弦值来实现物体的匀速圆周运动,代码如下所示。
var radian:Number = 0; //定义旋转的角度var cirx:Number = 200; //圆心的x坐标var ciry:Number = 200; //圆心的y坐标var radius:Number = 100; //圆的半径addEventListener(Event.ENTER_FRAME,mcMove);//处理侦听enterFrame事件,并调用mcMovefunction mcMove(event:Event):void{mc.x = Math.sin(radian) * radius + cirx;mc.y = Math.cos(radian) * radius + ciry;//使用三角函数计算mc实例的坐标radian += 0.05;//角度递增}上面的方法虽然比较直观,但是执行效率比较低,因为需要随时计算正余弦值,这种计算方式是比较慢的。
其实,通过坐标转换也可以实现圆周运动。
假设已知点(x1,x2)和半径r,旋转角度a后求点(x2,y2)。
利用数学中的正弦、余弦公式可以得出:x2 = x1 * cosa – y1 * sinay2 = y1 * cosa + x1 * sina按上面的方法来实现,这样就不需要在循环中计算正余弦值,可以提高代码的执行效率,代码如下所示。
Action Script 3.0 Flash动画类型动画是一个创建动作或其随时间变化的幻觉过程。
动画可以是一个物体从一个地方到另一个地方的移动,或者是经过一段时间后颜色的改变(改变也可以是一个形态上的,或者形状上的改变,从一个形状变成另一个形状)。
1.不同类型动画任何随着时间而发生的位置或者形象上的改变都可以称为动画。
Flash动画的类型主要有以下几种。
●帧动画逐帧动画是最基本的动画形式。
它最适合于每一帧中的图像都在更改,而并非仅仅简单地在舞台中移动的动画,为此,逐帧动画增加文件大小的速度也比补间动画快得多。
逐帧动画就是对每一帧的内容逐个编辑,然后按一定的时间顺序进行播放而形成的动画。
如图1-21所示。
逐帧逐帧文字笔划动画折扇的折叠动画图1-21 逐帧动画●补间动画Flash CS4支持两种不同类型的补间以创建动画:一种是传统补间(包括在早期版本中Flash创建的所有补间),其创建方法与原来相比没有改变;另一种是补间动画,其功能强大且创建简单,可以对补间的动画进行最大程度的控制。
补间动画是一个帧到另一个帧之间对象变化的一个过程。
在创建补间动画时,可以在不同关键帧的位置设置对象的属性,如位置、大小、颜色、角度、Alpha透明度等。
编辑补间动画后,Flash将会自动计算这两个关键帧之间属性的变化值,并改变对象的外观效果,使其形成连续运动或变形的动画效果。
可补间的对象类型,包括影片剪辑元件、图形元件、按钮元件以及文本字段。
例如,在已经添加“背景”图层的文档中,将“猴子”元件从【库】面板拖入到舞台。
然后,将该元件放置舞台的左侧,为补间动画的起始位置,而该帧为补间动画的起始关键帧,如图1-22所示。
图1-22 补间动画起始关键帧右击第一帧,在弹出的菜单中执行【创建补间动画】命令。
此时,Flash 将包含补间对象的图层转换为补间图层,并在该图层中创建补间范围,如图1-23所示。
图1-23 创建补间动画右击补间范围内的任意一帧(如最后一帧),执行【插入关键帧】|【位置】命令,即会在补间范围内插入一个菱形的属性关键帧。
Action Script 3.0 Flash特效特效指特殊的效果,由计算机制作出来的现实中不可能的效果;或者接近真实生活,但无法拍摄到的效果等。
最先,特效通过计算机制作的图像被运用到了电影作品的制作中。
其视觉效果的魅力有时已经大大超过了电影故事的本身。
而Flash特效是在Flash动画过程中,更多的表现动态过程、阐明抽象原理的一种特殊的效果。
例如,在课件设计中,合理的动画可以表达和传播学科知识,而添加特效后更能提高学生学习兴趣和教学效率,对于以抽象教学内容为主的课程更具有特殊的应用意义。
1.时间轴特效每种时间轴特效都以一种特定方式处理图形或元件,并允许用户更改所需特效的个别参数。
如表1-1列出了Flash CS4中,时间轴可以产生的一些特效效果。
2.Flash滤镜/混合模式使用Flash滤镜(图形效果),可以为文本、按钮和影片剪辑增添有趣的视觉效果。
Flash 所独有的一个功能是可以使用补间动画让应用的滤镜动起来。
如表1-2描述了Flash中滤镜的一些特效及说明。
使用Flash混合模式,可以创建复合图像。
复合是改变两个或两个以上重叠对象的透明度或者颜色相互关系的过程。
混合模式也为对象和图像的不透明度增添了控制尺度。
可以使用Flash混合模式来创建用于透显下层图像细节的加亮效果或阴影,或者对不饱和的图像涂色。
使用混合,可以混合重叠影片剪辑中的颜色,从而创造独特的效果。
混合模式包含以下元素:●混合颜色应用于混合模式的颜色。
●不透明度应用于混合模式的透明度。
●基准颜色混合颜色下面的像素的颜色。
●结果颜色基准颜色上混合效果的结果。
混合模式不仅取决于要应用混合的对象的颜色,还取决于基础颜色。
不同的混合模式,以获得所需效果,如表1-3所示。
表1-3 混合模式ActionScript的发展推动着Flash不断的进步,也为Flash的发展提供了更广阔的舞台,如动画制作、交互设计、视频点播、手持移动设备、游戏制作等诸多领域。
青岛大学软件技术学院二维动画课程设计报告题目名称 Flash游戏制作——《雷电游戏》姓名范庆珍专业数字媒体艺术班级 08级数字媒体艺术指导教师雷博二0一0年一月十五日目录目录 (2)一、游戏功能概述(雷电游戏) (3)二、角色与场景设计 (6)2.1 角色设计 (6)2.2场景设计 (9)3.1 模块一 (15)3.1.1 简介 (15)3.1.2 代码 (15)3.2 模块二 (20)3.2.1 简介 (20)3.2.2 代码 (20)四、测试与完善 (21)五、小结 (22)六、心得体会 (23)致谢 (24)参考文献 (25)评语 (26)一、游戏功能概述(雷电游戏)1.利用键盘控制对象的运动,从而实现移动飞机,发出子弹的功能。
并且飞机的移动,旋转和子弹的发射可以同时进行。
并且根据障碍物摆放和场景图片的效果及敌人的布局设置不同的房间感受,利用影片剪辑做好的地方部队可以实现自身的移动。
2.利用函数hitTestObject(),实现子弹打中敌方障碍(坦克或飞机)物子弹消失,敌方障碍(坦克或飞机)爆破的功能,并且飞机又一定的射程范围;并且飞机碰到障碍物(房间内的墙壁)会坠毁并显示死亡的功能。
3.利用数据类型的转换使飞机每击中敌方飞机一次得一分,每击中敌方坦克一次得三分,并在舞台上显示自己的得分。
4.利用事件的监听,影片剪辑和按钮实现序幕和场景的转换和进入下一关。
引入声音,利用编辑器编辑,达到想要的效果。
角色:我方飞机敌方坦克敌方飞机障碍物(房间墙壁)场景1.序幕;2.房间1(第一关);2.房间2(第二关);3.房间3(第三关);二、角色与场景设计2.1 角色设计1.打开Flash CS3新建一个影片剪辑文件,首先向舞台导入一个战斗机图形并按ctrl+B键打散,再移除多余的背景部分。
然后将整个图形转换为影片剪辑,再定义第2帧飞机坠毁,第3帧die ,并在第二帧上添加声音,.命名舞台上的实力为mc, 如下图所示。
1.点语法在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。
它也用标识指向电影剪辑或变量的目标路径。
点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。
例如,表达式ballMC.x是指电影剪辑实例ballMC的_X属性,_X电影剪辑属性指出编辑区中电影剪辑的X轴位置。
例如,submit是在电影剪辑form中设置的一个变量,而form又是嵌套在电影剪辑shoppingCart中的电影剪辑。
表达式shoppingCart.form.submit=true的作用是设置实例form的submit变量的值为true。
表达一个对象或电影剪辑的方法遵循相同的模式。
例如,ballMC实例的play方法用于移动ballMC的时间轴播放头,就像下面的语句:ballMC.play();点语法使用两个特殊的别名:_root和_parent。
别名_root是指主时间轴。
可以使用_root别名创建一个绝对路径。
例如,下面的语句调用主时间轴中电影剪辑functions的buildGameBoard函数:_root.functions.buildGameBoard();Flash MX允许使用别名_parent来引用嵌套当前电影剪辑的电影剪辑。
也可以用_parent创建一个相对目标路径。
例如,如果电影剪辑dog被嵌套在电影剪辑animal之中,那么,在实例dog上的下列语句告诉animal电影剪辑停止播放:_parent.stop();2.斜杠语法Flash的以前版本是使用斜杠语法指出电影剪辑或变量的目标路径的。
Flash MX播放器仍然支持这种语法,但不推荐使用。
在斜杠语法中,斜杠被用来代替点,用以标明电影剪辑或变量的路径。
要指出一个变量,可以在变量前加上冒号,如下面的语句所示:myMovieClip/childMovieClip:my Variable我们现在用点语法取代上述斜杠语法来表示上面的目标路径:myMovieClip.childMovieClip.myVariable斜杠语法在tellTarget动作中使用最为普遍,但这种动作在Flash MX中已不再推荐使用。
Action Script 3.0 形式参数和实际参数函数的参数是外界与函数内部进行通信的方法,对于有参数的函数来说,函数被调用时,函数有数据传递的关系。
例如,下面的代码在函数的调用过程中发生了数据传递,首先把5、10和3传递给a、b和c,通过比较后返回一个小的值3,并传递给函数numMin(),代码如下所示。
numMin(5,10,3); //调用函数function numMin(a: int,b: int,c: int): int{//创建numMin()函数if(a < b && a < c){//判断参数a的值是否为最小a = a;}else if (b < a && b < c){//判断参数b的值是否为最小a = b;}else{ //否则a = c;}return a; //返回最小值为3.3}在定义函数时,括号中的变量称为形式参数,简称形参。
如定义numMin()函数时的a、b、c就是形式参数。
在调用函数时,函数名后面括号中的变量或表达式称为实际参数,简称为实参。
如调用函数时的5、10和3。
函数的实参可以是任意数据类型的变量和表达式。
下面的代码分别以常量、变量和表达式作为函数的实参。
numMin(5,10,3)//以常量作为实参var i:int = 5;var j:int = 10;var k:int = 3;numMin(i,j,k);//以变量为实参numMin(i+j,j+k,i+k);//以表达式为实参参数对于一个函数来说非常重要。
如果一个函数包含有很多个参数,可以用对象来代替。
例如,求两点之间距离的函数有4个形参,其中,可以使用对象p1表示第一点的坐标,使用p2表示第二个点的坐标,代码如下所示。
var dis:Number = distance({x:100,y:300},{x:200,y:400});//调用时定义两个对象的属性值trace(dis);function distance(p1:Object,p2:Object):Number{var x:Number = p1.x - p2.x;var y:Number = p1.y - p2.y;var result:Number = Math.sqrt(x*x+y*y);return result; //返回变量result的值}定义对象一般用“new Object()”的形式,但是也可以通过“{}”运算符来定义对象。
Action Script 3.0 自定义函数在actionScript 3.0中可以通过两种方法来定义函数:使用函数语句和使用函数表达式。
如果采用静态或严格模式的编程,则应该使用函数语句来定义函数;如果有特定的需求,需要用函数表达式来定义函数,则才使用该方法。
函数表达式更多地运用地动态编程或标准模式编程中。
1.函数语句函数语句是在严格模式中定义函数的首选方法。
函数语句是以function关键字为开头,其使用语法如下所示。
function 函数名(参数列表):数据类型{代码块}其中,函数名用来说明函数的功能,因此,函数名的命名最好能够表达要实现的功能。
例如,playMovie表示播放影片,toString表示转换为字符串类型,nextFrame表示跳转到下一帧,getTime表示获取时间。
函数根据需要,可以向函数中的代码传递外部的变量即参数。
如果不需要传递参数,则不需要加入参数,这样的函数叫做无参函数。
例如,play()函数就是一个无参函数。
如果函数需要传递参数,这样的函数叫做有参函数。
当传递多个参数时,则在小括号中以逗号来分隔参数列表。
例如,trace()函数就是有参函数,可以向这个函数传递一个或多个参数。
函数中的代码块可以返回一些数据,这些数据可以是简单数据类型,也可以是复杂数据类型。
数据类型表示函数返回的数据类型,当不需要返回数据时,数据类型应该标识为void,即表示没有返回值。
例如,trace()函数就没有返回值,而toString()函数就返回一个字符串,代码如下所示。
var num:Number=123.456;var str:String=num.toString();trace(str,typeof(str));上面的代码使用toString()函数将数字型数据转换为字符串,并返回该字符串。
然后,通过“=”运算符把这个字符串赋值给变量str。
注意,trace()函数就不能这样使用,因为它没有返回值。
Flash和Swish两动画软件的比较一、引言谈起动画软件,大家会自然地想到Flash,其实,Swish也是一款比较好用的动画软件,只不过大家对它相对比较陌生罢了。
Flash可以制作一些很复杂的动画,Swish主要在制作文字特效动画效果见长。
它们的不同,可以形象地打个比方,Flash和Swish就好比出租车和火车,Flash好比为出租车,可以灵活穿梭于大街小巷;Swish好比为火车,可以很快地由一个火车站到达另外一个火车站,但却无法到达大街小巷等特定位置。
今天就让我们一起来感受两软件各自的长处吧。
二、介绍Swish的工作界面及操作演示Swish文字和图片特效中认识Swish的工作界面及操作使用方法。
1、文字特效:先观看“文字.swf”动画整体效果,以其中一个文字对象为例,讲文2的特效设置方法及声音加载方法。
方法一:“插入”→“音轨”方法二:进入脚本界面,加入如下语句:onFrame (1) { playSound("sound1.wav");}三、Flash和Swish比较熟悉了Swish在文字和图片的特效方法的操作后,我们对Swish有了初步的认识,那么,Flash和Swish①以绘制“红心”为例:●Flash中,用椭圆、选择、部分选择工具可快速绘制,经填色及渐变变形可得。
增加尖角,具有变形功能。
部分选取工具:选取对象时,对象呈现路径加节点状态。
●Swish中,因不具备两图形重叠时产生切割功能,选择工具也没有变形功能,所以不易绘制。
②以绘制“蝴蝶”为例:●Flash中,用线条工具和选择工具可以快速绘制出蝴蝶,如下图。
● Swish 中,因选择工具没有变形功能,所以不易绘制。
3、在文字特效方面,Swish 要比Flash 强大。
● Flash 中,文字特效要靠自己去制作。
● Swish 中,文字特效功能是现成的,Swishmax 3.0中有230种特效可以拿来直接使用。
说明:Swish 中230种特效,在时间轴上拖动播放指针可观察效果。
《多媒体技术及应用》填空题1.数字化主要包括( )和( )两个方面。
2.多媒体计算机技术是指运用计算机综合处理多媒体信息的技术,包括将多种信息建立逻辑连接,进而集成一个具有( )的系统。
4. 多媒体技术具有( )、( )、( )和( )等特性。
5.Window中最常用的图像文件格式有( ) 、( )、( ) 、( )。
6.分辨率是指把采样所得的值数字化,即用( )来表示模拟量,进而实现( )转换。
7.国际常用的广播视频标准和记录格式有:( )、( )和( )。
9.多媒体创作系统大致可分为( )、( ) 、( )三个部分。
10.( )是指将视频信号数字化并记录到文件上的过程。
11.颜色具有三个特征:( )、( )、( )。
12.根据通信节点的数量,视频会议系统可分为两类:( ),( )。
13.用计算机实现的动画有两种:( )、( )。
14.Flash是美国Macromedia公司出品的( )和( )的软件15.( )、( )、( )、( )都是视觉媒体。
16.音频信号主要分为( )、( )信号两类。
17.Flash 通常是以( )技术在互联网上发布动画的,该技术是目前较为先进的发布方式。
18.一帧画面由若干个像素组成,在每一帧内的相邻像素之间相关性很大,有很大的信息冗余,称为( ).。
19.Flash 中的基本绘图工具包括( )20.Flash中墨水瓶工具的作用是());颜料桶工具的作用是())。
21.矢量图形和动画的优点是只用少量的数据就可以描述一个复杂的对象,从而( )相应的文件的大小,而且任意地缩放而不会有( );23.Photoshop保存的源文件的扩展名是( ),Flash保存的源文件的扩展名是( )。
24.“元件”是Flash里基本的概念,是构成影片的基本组成部分,“元件”主要有三种类型:( )、( )、( )。
25.Photoshop中要对文字图层设置滤镜效果时,应先将该图层做( )操作,从而使文字变为图像。
Action Script 3.0 全局坐标与局部坐标在Flash 中,制作的影片通常由很多对象的实例组成。
一些简单的对象实例往往嵌套在复杂的对象实例中以发挥作用。
在使用ActionScript 控制这些被嵌套在对象实例中的对象实例时,就需要考虑对象实例的全局坐标与局部坐标。
例如,一个Flash 导航条可以由2级对象实例构成,如图7-7所示。
图7-7 Flash 导航条动画在制作Flash 导航条动画的一级菜单对象实例menu1时,相当于将对象实例menu1添加到root 下。
在舞台(stage )中,root 的坐标原点位于舞台(stage )的左上角,该点坐标为(0,0)。
对象实例menu1相对于舞台(stage ),也有一个坐标,该坐标就被称做全局坐标。
对于root 而言,menu1在root 之下,所以menu1相对于root 也有一个坐标。
当root 的坐标改变时,menu1的坐标也会做出相应的改变。
但menu1相对于root 的距离并未改变。
menu1相对于root 的坐标就被称做局部坐标。
同理,对象实例menu1包含的子对象实例submenu1,相对于舞台(stage )有一个全局坐标,该对象实例对于menu1而言,也有一个局部坐标。
下面通过一个简单的实例来测试全局坐标与局部坐标的区别。
在Flash 影片中,插入一个火箭的图形,如图7-8所示。
图7-8 插入的火箭图形在用ActionScript 控制图形的位置时,首先应将其转换为元件,并将其实例化。
在转换元件过程中,可通过【转换为元件】对话框调整其注册点为居中,如图7-9所示。
图7-9 更改注册点在【时间轴】面板中新建图层AS,添加ActionScript代码,修改对象实例rocket的位置,如下所示。
rocket.x=100;//对象实例rocket的横坐标为100rocket.y=100;//对象实例rocket的纵坐标为100执行上面的代码,即可看到对象实例火箭的位置由影片中间改变为影片的左上角,如图7-10所示。
ActionScript3教程系列【黑羽】ActionScript3.0系列教程(1):与Flash9先来一次亲密接触!如蒙转载,请留下我的Blog链接:,thx)Flash Professional9ActionScript3.0Preview版本今天发布了,意味着从此我们从此不仅仅只能使用Flex2来使用AS3.0,更可以使用我们一直很熟悉的Flash IDE来进行AS3.0开发了。
与Flex2不同,Flash9alpha(即上面的Flash Professional9ActionScript3.0Preview)允许我们创建基于时间轴的ActionScript3.0的Fla文档,而不是基于State的MXML文档。
在Flash9alpha里,我们和以前一样可以在舞台上直接手绘矢量图,创建元件,添加动画,等等。
我黑羽是急性子,先跳开一些特色的介绍,单刀直入,马上来个实例。
边讲解边说说Flash9的特点。
点击看大图,清楚点。
为了照顾新手xdjm们,看图说话一把。
老鸟略过勿看,省得嫌我罗嗦。
呵呵。
新建一个fla,随便画一个方块什么的,双击选中按F8转换成MovieClip。
在属性面板中命名为kingda_mc。
和以前一模一样。
再新建一层,命名为actions,这是个好习惯,要保持。
选中第一帧,按F9打开动作面板,写入如下代码。
Control+Enter,在测试窗口中,双击那个方块,就会有trace信息显示出来。
//【黑羽】ActionScript3.0系列教程(1)//kingda_mc.doubleClickEnabled=true;kingda_mc.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);function clickHandler(event:MouseEvent):void{trace("哈哈,你双击我了");}//直接支持双击了,兄弟们,爽不爽^_^稍作解释,这儿有几个和AS2.0不同的地方了。
人工智能及识别技术ARTIFICIAL INTELLIGENCE AND IDENTIFICATION TECHNIQUES1引言由于Flash 动画具有交互性强、成本低以及文件小而便于传播等特点,因此,深受众多应用行业动画爱好者的喜欢。
随着Flash 的发展尤其是ActionScript 3.0脚本语言的推出,Flash 的功能越来越强大,使得开发交互性的动画和游戏更加容易。
以简单的“抓气球”游戏为例,使用Flash cs4和Action -Script 3.0阐述Flash 游戏开发技术,在游戏过程中,当移动鼠标指针与创建的随机对象之间是否接触并执行相对应的程序块时,并显示通过移动鼠标指针所捕捉到的气球数量,游戏界面如图1所示。
2游戏设计在制作游戏之前,对游戏进行完整的制作规划以及画出游戏流程图,将会节省很多的时间和精力。
Flash 游戏制作规划并不难,大致上只需要设想好游戏中会发生的所有情况,并针对这些情况安排好对应的处理方法。
抓气球的游戏流程图如图2所示。
3游戏实现3.1创建游戏元素3.1.1按钮元件元件是可反复取出使用的图形、按钮或一小段动画,元件中的小动画可以独立于主动画进行播放,每个元件可由多个独立的元素组合而成。
说的直白些,元件就相当于一个可重复使用的模板,使用一个元件就相当于实例化一个元件实体。
使用元件的好处是,可重复利用,缩小文件的存储空间。
本游戏中基于ActionScript3.0的Flash 游戏设计与实现孙翠华1,密君英1,戈勇2(1.苏州农业职业技术学院,苏州215008;2.苏州供电公司,苏州215004)摘要:通过一个“抓气球”的Flash 小游戏,讲解如何使用ActionScript 在游戏中产生随机对象与删除对象的方法,以及处理侦听事件,分析了游戏制作流程,实现Flash 游戏的制作和优化。
关键词:ActionScript ;Flash ;游戏;抓气球The Design and Realization of the Flash Game Based on ActionScript 3.0SUN Cuihua 1,MI Junying 1,GE Yong 2(1.Suzhou Polytechnic Institute of Agriculture ,Suzhou 215008; 2.Suzhou Power Supply Company ,Suzhou 215004)Abstract:This article describes the method how to use ActionScript to generate random objects and delete the object in thegame,and handle the listening events based on the flash game of catch the balloon,and analyze the game process,realization the production and optimization of Flash games.Key words:ActionScript ;Flash ;game ;catch the balloon作者简介:孙翠华(1981-),女,讲师,硕士,研究方向:Web 应用开发、计算机技术、数据库技术等;密君英,副教授,硕士;戈勇,助理工程师,学士。
Action Script 3.0 基于时间的运动
除了使用enterFrame事件表示速度中的时间外,还可以使用Timer类来表示时间,而且后者更加直观、稳定,因为Timer类可以直接设置时间间隔。
Timer类是Flash Player计时器的接口,它可以创建新的Timer对象,以便按指定的时间顺序执行代码。
使用start()方法可以启动计时器。
为timer事件添加事件侦听器,以便将代码设置为按计时器间隔来执行。
Timer类定义的时间是以毫秒为单位,1000毫秒等于1秒。
从理论上讲,12FPS的帧频相当于1000/12毫秒,所以使用enterFrame事件和Timer类本质上是一样的,但实际上帧频并不稳定,很多程序在运行时帧频会不断变化,这也是Timer类胜过enterFrame事件的一方面。
Timer类的方法和属性介绍如表8-1所示。
表8-1 Timer类的方法和属性
Timer类的构造函数有两个参数:第一个参数是表示计时器事件间的延迟(以毫秒为单位),第二个参数是重复调用的次数,其使用方法如下所示。
var myTimer:Timer = new Timer(delay,count);
例如,使用Timer()方法构造一个Timer对象,通过该对象实现影片剪辑元件向右运动,代码如下所示。
var dx:Number = 5; //移动的速度
var myTimer:Timer = new Timer(50,Infinity);
//创建名称为myTimer的Timer对象,并设置时间间隔和次数
myTimer.start(); //启动计时器
myTimer.addEventListener(TimerEvent.TIMER,mcMove);
//侦听timer事件,并调用mcMove()函数
function mcMove(e:TimerEvent):void{
mc.x +=dx; //mc元件以dx的速度向右移动
}
由于timer事件每隔50毫秒触发一次,即mc每隔50毫秒向右移动5像素。
又因为用
Infinity设置为无限次循环,所以运动将会不断持续下去。
上面的运动描述了位移和时间的关系,即每隔一段时间,物体移动的位移是相同的,这样的运动称为匀速运动。
但是上面实现的运动并不会停止,而在实际应用中,当物体运动到一定位置后,需要让该物体停止运动。
例如,当物体运行到舞台的右边界时停止运动,代码如下所示。
var dx:Number = 50; //移动的速度
var myTimer:Timer = new Timer(50,Infinity);
//创建名称为myTimer的Timer对象,并设置时间间隔和次数
myTimer.start(); //启动计时器
myTimer.addEventListener(TimerEvent.TIMER,mcMove);
// 侦听timer事件,并调用mcMove()函数
function mcMove(e:TimerEvent):void{
mc.x +=dx; //mc元件以dx的速度向右移动
if (mc.x >= stage.stageWidth){ //当x坐标大于或等于舞台的右边界
myTimer.stop(); //停止计时器
myTimer.removeEventListener(TimerEvent.TIMER,mcMove);
//移除timer事件侦听器
}
}。