Action Script 3.0 基于时间的运动

合集下载

Action Script 3.0 实战 海上升明月

Action Script 3.0  实战  海上升明月

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 类和对象

Action Script 3.0  类和对象

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文件中,以防止多个类之间的变量名等互相干扰,也方便将自定义类进行分类管理。

AS 3.0代码简介

AS 3.0代码简介
addChild(xGougou);
}
测试上面两段代码,你可以看到,第一个对象Gougou在上面,坐标是(275,100),下面的Gougous生成了10个副本,横坐标从50到500依次展开,纵坐标是300,缩放率为50%.
复制代码
for(var i=0;i<3;i++){for(var j=0;j<3;j++){for(var k=0;k<3;k++){
复制代码
for(var i=0;i<10;i++){
var xGougou:Gougou=new Gougou();
xGougou.x=50*i+50;
xGougou.y=300;
xGougou.z=150*i+50;
xGougou.scaleX=.5;
xGougou.scaleY=.5;
一个布尔值,指示影片剪辑是否处于活动状态。 MovieClip
filters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。 DisplayObject
focusRect : Object
指定此对象是否显示焦点矩形。 InteractiveObject
framesLoaded : int
指定此对象是否接收 doubleClick 事件。 InteractiveObject
dropTarget : DisplayObject
[只读 (read-only)] 指定拖动 sprite 时经过的显示对象,或放置 sprite 的显示对象。 Sprite
enabled : Boolean

Action Script 3.0 匀速圆周运动

Action Script 3.0  匀速圆周运动

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动画类型

Action Script 3.0  Flash动画类型

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特效

Action Script 3.0  Flash特效

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 action script

课程设计《雷电游戏》flash action script

青岛大学软件技术学院二维动画课程设计报告题目名称 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, 如下图所示。

AS3.0自学教程

AS3.0自学教程

1.3.2 脚本窗口概述
• Action Script 3.0是很好的面向对象编程语言, 同样Flash CS3也提供了一个很不错的脚本编辑器, 这就是Flash的脚本窗口。使用脚本窗口可以创建 或者导入外部的脚本文件,这些文件可以是 ActionScript、Flash Communication或Flash JavaScript文件。
第1章 AcionScript 3.0概述
• ActionScript 3.0是针对Flash Player运行时环 境的编程语言,它用于处理各种人机交互、数据 交互等功能。本章将粗略的介绍ActionScript语 言的发展历史、新增特色、编程环境等内容,以 及第一个ActionScript3.0程序。

• •
• • • •
1.3.3 动作面板和脚本窗口的工具介绍
:折叠成对大括号按钮,用于对出现在当前包含插入点的成对大括号或小括号 间的代码进行折叠。 • :折叠所选按钮:用于折叠当前所选的代码块。 • :展开全部按钮:用于展开当前脚本中所有折叠的代码。 • :应用块注释按钮,用于将注释标记添加到所选代码块的开头和结尾。 • :应用行注释按钮,用于在插入点处或所选多行代码中每一行的开头处 添加单行注释标记。 • :删除注释按钮,用于从当前行或当前选择内容的所有行中删除注释标记。 • :显示/隐藏工具箱按钮,用于显示或隐藏“动作”工具箱。 • :脚本助手按钮(仅限动作面板),其用于打开和关闭“脚本助手”模式。 • :帮助按钮,用于显示“脚本”窗格中所选 ActionScript 元素的参考信 息。 • :面板菜单 (仅限动作面板),包含适用于动作面板的命令和首选参数。
• • • • • • • • 如果要在Flash CS3中加入ActionScript代码,可以直接使用动作面板来输入。 要打开动作面板,请执行下面的操作:单击【窗口|【动作】,或者按【F9】。 打开后的动作面板如图所示。 下面对图中各部分的名称及作用加以说明。 A:脚本窗格,用于输入代码的地方。 B:面板菜单,单击后可显示动作面板功能菜单 C:动作工具箱,可以通过双击或者拖动的方式将其中的ActionScript元素添加到脚 本窗格中。 D:脚本导航器,其有两个功能,一是通过单击其中的项目,可以将与该项目相关的 代码显示在脚本窗口中,二是通过双击其中的项目,对该项目的代码进行固定操作。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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事件侦听器
}
}。

相关文档
最新文档