- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可视窗口(view window)控制着可视区域及其在LayerManager 的坐标系统中的位置。 图7-17 相对原点 paint(Graphics, int, int)方法包含一个(x,y)坐标,控制可视窗口在屏幕中的显示位置。 图7-18 控制可视窗口显示位置 为了添加一个Layer,使用append()方法向这个LayerManager 添加一个Layer。 7.5 手机音效开发 现在能播放音乐的手机已经是很常见的了,同时手机游戏也需要声音来增加动感效果,所以手机音效也成为了开发热点。 7.4.3 Sprite的使用 Sprite 是一个基本的可视元素,可以用存储在图像中的一帧或多帧来渲染它;轮流显示不同的帧可以令Sprite 实现动画。 翻转、旋转等几种变换方式也能应用于Sprite 使其外观改变。作为Layer 子类,Sprite 的位置可以改变,并且还能设置其可视与否。 1.Sprite 帧 用于渲染Sprite的原始帧由一个单独的Image对象提供,此Image可以是可变的,也可以是不可变的。 图7-4 帧的分解 2.帧序列 Sprite 的帧序列定义了帧以什么样的顺序来显示。 图7-5 帧的序列 图7-6 帧的特定序列 图7-7 更新显示 3.Reference Pixel 作为Layer 的一个子类,Sprite 继承了很多方法来设置和获取位置,如setPosition(x,y),getX()和getY()。 4.Sprite 的变换 几种变换可应用于Sprite。可用的变换包括旋转几个90 度加上镜像(沿垂直轴)。 图7-8 Reference Pixel 图7-9 参考像素点被定位在树枝末端 图7-10 Sprite的变换 图7-11 90度旋转的变换 7.4.4 碰撞检测 Sprite 非常适合移动的物体,如游戏主角、敌人等,在游戏中,可以使用Sprite 提供的碰撞检测功能来简化游戏逻辑。 Sprite的碰撞检测可以分两种:一种是矩形碰撞检测,另一种是像素碰撞检测。游戏中Sprite的大小往往是用包围它的矩形的大小来表示的,如在图7-12中的飞机和导弹并没有发生碰撞但检查的结果却发生了碰撞。 图7-12 矩形碰撞检测 对于像素碰撞检测,往往把Sprite的背景色设置为相同的颜色,碰撞检查的时候就只判断两个图片除背景色以外的其他像素是否发生了重叠。 像素碰撞检测比较精确,但计算复杂,一般没有特殊要求都使用矩形碰撞检测。下面的例子两个矩形发生了碰撞但飞机和导弹并没有发生碰撞,如图7-13所示。 图7-13 像素碰撞检测 要判断两个Sprite 是否碰撞,或者与其他Layer 是否碰撞,可以使用collidesWith()方法。CollidesWith()共有三种形式: (1)public final boolean collidesWith(Sprite s,Boolean pixelLevel) (2)public final boolean collidesWith(TitledLayer t,Boolean pixelLevel) (3)public final boolean collidesWith(Image image,int x,int y,Boolean pixelLevel) 7.4.5 Layer的使用 Layer 是一个抽象类,表示游戏中的一个可视元素。 1.TiledLayer TiledLayer 由一系列单元格组成,单元格可被一组贴图填充。 图7-14 TiledLayer 每个贴图都被赋予一个唯一的索引号。 除了静态贴图外,开发者同样能够定义一系列动态贴图(animated tiles)。 动态贴图允许开发者能非常容易地改变一组单元格的外观。 图7-15 TiledLayer背景 图7-16 TiledLayer动态贴图 2.LayerManager LayerManager管理一系列的Lay
文档评论(0)