第三章 坐标系统以及帧延迟循环_第1页
第三章 坐标系统以及帧延迟循环_第2页
第三章 坐标系统以及帧延迟循环_第3页
第三章 坐标系统以及帧延迟循环_第4页
第三章 坐标系统以及帧延迟循环_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Flash游戏编程游戏编程肖肖 刚刚闽江学院电子系信息教研室闽江学院电子系信息教研室Email:第三章第三章 坐标系统以及延迟循环坐标系统以及延迟循环 教学提要Flash中的坐标系统中的坐标系统视觉设计和编程的结合视觉设计和编程的结合延迟循环模式延迟循环模式利用剪辑嵌套改进了的延迟循环模式利用剪辑嵌套改进了的延迟循环模式 掌握掌握Flash在时间和空间上的应用技术在时间和空间上的应用技术1 Flash中的坐标系统中的坐标系统坐标轴坐标轴计算机屏幕的坐标原点为左计算机屏幕的坐标原点为左上角,并且向下为上角,并且向下为y轴增长的方向,以像轴增长的方向,以像素为单位。如下图所示:素为单位。如下图所示

2、: 1.1 坐标坐标任何可视对象都有一个坐标值(任何可视对象都有一个坐标值(x,y),),它的含义是它的含义是相对相对于它的参考坐标系于它的参考坐标系原点原点来来说,它的说,它的中心点中心点在什么位置。在什么位置。通过读取这个坐标值就可以知道对象的坐通过读取这个坐标值就可以知道对象的坐标。标。通过改变对象的坐标值,也就可以改变它通过改变对象的坐标值,也就可以改变它在屏幕上的位置。在屏幕上的位置。1.2 坐标原点坐标原点坐标原点分为两种情况:坐标原点分为两种情况:如果可视对象直接放置在舞台上,则以舞台如果可视对象直接放置在舞台上,则以舞台的左上角作为坐标原点。的左上角作为坐标原点。如果可视对象嵌

3、套在某可视对象内,则以某如果可视对象嵌套在某可视对象内,则以某可视对象的坐标中心点作为坐标原点。可视对象的坐标中心点作为坐标原点。也就是说,对象的坐标值是相对的概念。也就是说,对象的坐标值是相对的概念。指相对于它的上层对象的中心点,它的指相对于它的上层对象的中心点,它的坐标值是多少。坐标值是多少。 1.3 中心点中心点对象的坐标中心点默认情况下,是在对对象的坐标中心点默认情况下,是在对象外接矩形的左上角。一个五角星的坐象外接矩形的左上角。一个五角星的坐标中心点如下图所示:标中心点如下图所示: 区别以下点:区别以下点:坐标中心点坐标中心点几何中心点几何中心点变形中心点变形中心点信息中心点信息中心

4、点 程序总是以坐标中心点作为对象的中心点 1.4 属性嵌套属性嵌套可视对象层次结构中的坐标具有嵌套的可视对象层次结构中的坐标具有嵌套的特点。假设对象特点。假设对象a中嵌套着对象中嵌套着对象b,则,则b相对于舞台的相对于舞台的x坐标应为坐标应为a.x+b.x(不考(不考虑缩放)。虑缩放)。事实上,不仅仅是坐标,像角度、透明事实上,不仅仅是坐标,像角度、透明度等可视对象属性都具有嵌套的特点。度等可视对象属性都具有嵌套的特点。如下表所示:如下表所示: 1.4 属性嵌套属性嵌套属性属性嵌套关系嵌套关系不透明度(alpha)全局不透明度=a.alpha*b.alpha活动状态(enable)全局活动状态

5、=(a.enable&b.enable)高度(height)全局高度=a. scaleY *b.height角度(rotation)全局角度a.rotation+b.rotation可见性(visible)全局可见性=(a.visible&b.visible)宽度(width)全局宽度=a. scaleX *b.widthx坐标(x)全局x坐标=a.x+b.x*a. scaleXy坐标(y)全局y坐标=a.y+b.y*a. scaleY鼠标x坐标(mouseX)全局root. mouseX =a.x+(b.x+b. mouseX) *a. scaleX鼠标y坐标(mouseY)

6、全局root. mouseY =a.y+(b.y+b. mouseY) *a. scaleYx缩放(scaleX)全局x缩放=a. scaleX *b. scaleXy缩放(scaleY)全局y缩放=a. scaleY *b. scaleY1.5 小结小结理解理解Flash对二维平面的坐标系统布置,对二维平面的坐标系统布置,以及显示对象嵌套关系,对以及显示对象嵌套关系,对Flash游戏编游戏编程人员来说非常重要,应在学习过程中程人员来说非常重要,应在学习过程中不断深入体会。不断深入体会。2 视觉设计和编程的结合视觉设计和编程的结合 Flash将动画和程序完美地集成在一起,将动画和程序完美地集成

7、在一起,可以先在可以先在Flash中设计游戏画面、角色动中设计游戏画面、角色动画、特效等,然后在脚本中控制它们,画、特效等,然后在脚本中控制它们,轻松地实现精美的游戏。轻松地实现精美的游戏。 2.1 举例:花瓶和桌子举例:花瓶和桌子 程序描述:房间里有一张桌子,桌子上放着一个花瓶。程序描述:房间里有一张桌子,桌子上放着一个花瓶。拖动桌子时桌子和花瓶一起移动,拖动花瓶时只有花拖动桌子时桌子和花瓶一起移动,拖动花瓶时只有花瓶移动,而且只能在桌子的宽度范围内水平移动。松瓶移动,而且只能在桌子的宽度范围内水平移动。松开鼠标的时候,输出桌子和花瓶的坐标值。开鼠标的时候,输出桌子和花瓶的坐标值。 2.2

8、举例举例分析分析这个例子里,我们可以将花瓶和桌子分别做成剪辑。这个例子里,我们可以将花瓶和桌子分别做成剪辑。然后将它们嵌套在一个大的剪辑内是一种不错的做法。然后将它们嵌套在一个大的剪辑内是一种不错的做法。这样当拖动桌子时让大剪辑移动,而拖动花瓶的时候,这样当拖动桌子时让大剪辑移动,而拖动花瓶的时候,让花瓶剪辑移动,此时可以直接参考桌子的坐标系统,让花瓶剪辑移动,此时可以直接参考桌子的坐标系统,轻松达到限制花瓶移动范围的目的。轻松达到限制花瓶移动范围的目的。即使用如下的显示对象层次结构:即使用如下的显示对象层次结构: 2.3 制作步骤制作步骤 步骤:步骤:绘制场景绘制场景创建剪辑及其层次结构创建

9、剪辑及其层次结构编写代码编写代码保存与测试保存与测试具体请参看具体请参看doc文档。文档。 3 延迟循环模式延迟循环模式 Flash程序的一些关键代码往往要求间隔程序的一些关键代码往往要求间隔一段时间后被重新执行。例如:一段时间后被重新执行。例如:角色走路角色走路 智能大炮智能大炮实时成绩显示实时成绩显示最常用的一种方法:帧跳转,通过在帧最常用的一种方法:帧跳转,通过在帧之间循环跳转而实现代码的重复执行。之间循环跳转而实现代码的重复执行。 3.1 典型的帧循环模式典型的帧循环模式 第第1帧:初始化,用来定义需要使用到的变量并且赋初始值,以帧:初始化,用来定义需要使用到的变量并且赋初始值,以及定

10、义各种函数。及定义各种函数。第第2帧:被重复执行的代码帧:被重复执行的代码第第3帧有一条跳转语句,跳回第帧有一条跳转语句,跳回第2帧并播放。帧并播放。如果这段代码有结束的需要,则在满足结束条件的时候让它跳到如果这段代码有结束的需要,则在满足结束条件的时候让它跳到第第4帧并停止。帧并停止。 初始化关键代码跳转结果 1 2 3 4 3.2 示例程序:弹球示例程序:弹球 程序描述:程序描述:屏幕上有一个弹球,它能够在屏幕内作弹跳屏幕上有一个弹球,它能够在屏幕内作弹跳运动,它会根据给定的参数如重力、空气阻运动,它会根据给定的参数如重力、空气阻尼、碰撞损失等表现出相应的运动方式,还尼、碰撞损失等表现出相

11、应的运动方式,还可以通过鼠标点击并抛甩小球的方式给小球可以通过鼠标点击并抛甩小球的方式给小球一个初始的运动状态。一个初始的运动状态。 关键部分讲解:关键部分讲解: 如何实现运动现象模拟如何实现运动现象模拟 如何实现鼠标抛甩来获得初始运动状态如何实现鼠标抛甩来获得初始运动状态 3.3 如何实现运动现象模拟如何实现运动现象模拟 将将Flash文档的帧频率设定为文档的帧频率设定为50fps,采用三,采用三帧循环模式,则每过帧循环模式,则每过0.02秒,关键代码就被执秒,关键代码就被执行一遍。在关键代码中,根据对象的行一遍。在关键代码中,根据对象的vx和和vy计算在间隔了计算在间隔了 时间内的位移时间

12、内的位移 和和 即可。即可。公式为:公式为:txyttgvytvxyx)21(3.3 如何实现运动现象模拟如何实现运动现象模拟如果要模拟风、摩擦力下的运动、简谐如果要模拟风、摩擦力下的运动、简谐振动等等,都有公式可循,这些公式用振动等等,都有公式可循,这些公式用ActionScript编程实现是非常容易的事编程实现是非常容易的事情。情。反弹的实现:在满足边界条件的情况下,反弹的实现:在满足边界条件的情况下,改变速度的方向,根据新的速度值计算,改变速度的方向,根据新的速度值计算,表现出来的即为反弹效果。表现出来的即为反弹效果。 3.4 如何实现鼠标抛甩来获得如何实现鼠标抛甩来获得初始运动状态初始

13、运动状态当弹球处于被拖动状态时,也就是用户用鼠标按住弹当弹球处于被拖动状态时,也就是用户用鼠标按住弹球并抛甩。在这个状态下,每隔球并抛甩。在这个状态下,每隔 时间比较小球当前时间比较小球当前坐标与原坐标的差异坐标与原坐标的差异 和和 。则瞬时速度为。则瞬时速度为 当用户松开鼠标时,将这个最新的瞬时速度作为弹跳当用户松开鼠标时,将这个最新的瞬时速度作为弹跳运动状态下的初始速度,弹球进入弹跳运动状态。运动状态下的初始速度,弹球进入弹跳运动状态。 设设 为单位时间,则理想弹跳运动的公式可以简化为:为单位时间,则理想弹跳运动的公式可以简化为: txytyvtxvyx,t,当处于拖动状态下当处于弹跳状态

14、下,yvxvgvvvyvxyxyyyx,5 . 0,3.5 具体实现具体实现步骤如下步骤如下设置文档参数设置文档参数绘制小球绘制小球设置三帧模式设置三帧模式编写每一帧的代码编写每一帧的代码保存与测试保存与测试具体请参考具体请参考doc文档文档 4 利用剪辑嵌套改进循环利用剪辑嵌套改进循环问题的提出:如果游戏不是一个弹球,问题的提出:如果游戏不是一个弹球,而是而是10个甚至个甚至100个呢?个呢?它们都遵循一样的运动规律,只是初始它们都遵循一样的运动规律,只是初始位置,速度不同而已。位置,速度不同而已。如果将控制运动的代码写在主场景的时如果将控制运动的代码写在主场景的时间轴上,那么几乎相同的代码

15、,得写间轴上,那么几乎相同的代码,得写10遍,遍,100遍!程序因此变得庞大,难以遍!程序因此变得庞大,难以维护。维护。我们需要采用一种新的编程策略!我们需要采用一种新的编程策略! 4.1 利用剪辑嵌套改进循环利用剪辑嵌套改进循环解决方法解决方法由于弹球剪辑内部也有时间轴,可以把控制其运动由于弹球剪辑内部也有时间轴,可以把控制其运动的代码放置在弹球剪辑内部,只要剪辑本身的时间的代码放置在弹球剪辑内部,只要剪辑本身的时间轴实现典型的帧循环,它就可以实现需要的运动效轴实现典型的帧循环,它就可以实现需要的运动效果。果。在主场景看来,弹球剪辑就是一个在主场景看来,弹球剪辑就是一个“独立自主,自独立自主

16、,自力更生力更生”的对象,它不依赖于主场景的任何代码而的对象,它不依赖于主场景的任何代码而自行运动着。自行运动着。 这时,如果需要这时,如果需要100个弹球,那么只要复制个弹球,那么只要复制100个个实例就可以了,每个实例都会自动完成弹跳运动,实例就可以了,每个实例都会自动完成弹跳运动,不需要再添加任何代码。不需要再添加任何代码。 4.2 解决方法评价解决方法评价这个策略可以认为是软件工程关于模块这个策略可以认为是软件工程关于模块低耦合高内聚低耦合高内聚要求在要求在Flash里的实现。里的实现。这种思想的应用非常广泛,模块独立性策略应用的好这种思想的应用非常广泛,模块独立性策略应用的好坏,也是

17、衡量开发者软编程素养的一个指标。坏,也是衡量开发者软编程素养的一个指标。例如拼图游戏中图块的设计,笨拙的开发者制作每一例如拼图游戏中图块的设计,笨拙的开发者制作每一个图块,为每个图块编写几乎一样的代码,而聪明的个图块,为每个图块编写几乎一样的代码,而聪明的开发者,只需要制作一个剪辑,将这个剪辑复制成一开发者,只需要制作一个剪辑,将这个剪辑复制成一个阵列,控制它们的位置以及其它属性、方法,就可个阵列,控制它们的位置以及其它属性、方法,就可以制作出同样的效果。而且这样做还有一个好处,如以制作出同样的效果。而且这样做还有一个好处,如果需要不同的分割比例,那只要修改一下复制阵列的果需要不同的分割比例,那只要修改一下复制阵列的参数就可以了。参数就可以了。4.3 举例:独立的弹球举例:独立的弹球在上一节程序的基础上修改成具有独立在上一节程序的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论