使用Layer类和Sprite类实现手机游戏的动画效果

简介:

所有计算机游戏的图形的核心都是动画,没有动画,也就没有移动,没有了移动,只能玩猜字游戏和益智游戏。在MIDP 2.0 API包含了对精灵动画的支持。在MIDP编程中,使得精灵动画成为可能的两个主要的类是Layer类和Sprite类。Layer类对一个叫做图层(layer)的通用图形对象建模,该对象充当精灵和其他图形游戏对象的基础。可以把游戏中的任何离散的可视元素都看作一个单独的图层。从编程的角度来看,Layer类跟踪一个可视元素的位置、宽度、高度和可见性等信息。

Layer 类是一个抽象类,即意味着其不可以直接创建一个 Layer 对象的实例。但是可以创建一个派生自 Layer 的对象的实例,例如 Sprite 或者设计者从 Sprite 派生来的类。 Layer 类的子类必须实现它们自己的 Paint() 方法,以便它们能够绘图。图层的初始位置是( 0 0 ,它会相对于传递给图层的 paint() 方法的 Grphics 对象的坐标系进行解释。
下面是定义于 Layer 类中的方法,在使用图层和精灵的时候,这些方法都很重要。
· getX () ——获得图层左上角的 X 位置;
· getY () ——获得图层左上角的 Y 位置;
· getWidth () ——获得图层的宽度;
· getHeight() ——获得图层的高度;
· setPosition () ——设置图层左上角的 XY 位置;
· move() —— 根据给定的 XY 量来移动图层;
· isVisible() ——获得图层的可见性;
· setVisible() ——设置图层的可见性;
· paint() ——在派生自 Layer 类的子类中重写。
Sprite 类通过提供额外的两维图形对象所需的功能,从而构建于Layer类之上。 Sprite 类所提供的额外的功能主要包括:
·基于图形的精灵,以及支持多帧图像;
·一个精灵的图像可以变形(游戏,反射等);
·可以定义一个参考像素,作为精灵变形和定位的基础;
·对于带有多帧图像的
精灵,图像显示的顺序可以精确设定;
·精灵之间的冲突可以使用矩形,缩小的矩形或图像数据来进行冲突检测;
Sprite 类为手机游戏编程提供了相当多的功能。如果要根据一个图像来创建一个精灵,只要把一个新创建的 Image 对象传递到 Sprite 的构造函数中即可,在我的游戏中实现如下:
try
Sprite ShipSprite= new Sprite(Image.createImage(“/*.png”)); 
ShipSprite.setPosition(0,0); 

catch (IOException e){ 
    System.err.println(“^_^对不起,下载图片发生错误^_^”); 


     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/204441,如需转载请自行联系原作者

相关文章
|
定位技术 API
基于Leaflet.draw的自定义绘制实战
本文介绍了如何基于leaflet.draw进行自定义绘制,同时获取对象的bbox和geojson信息。
510 0
基于Leaflet.draw的自定义绘制实战
|
2天前
|
图形学
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现七彩动画光圈_ColorfulCircle】
【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现七彩动画光圈_ColorfulCircle】
|
3月前
dragonBones使用Sprite换肤后mesh问题
dragonBones使用Sprite换肤后mesh问题
18 0
|
Swift
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
627 0
SwiftUI极简教程32:使用Shape形状和Animation动画创建一个圆形进度条
|
缓存 异构计算
【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
207 0
|
Dart 开发者
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(二)
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(二)
169 0
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(二)
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(一)
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(一)
183 0
【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )(一)
|
C# API 开发者
[UWP]用Shape做动画(2):使用与扩展PointAnimation
原文:[UWP]用Shape做动画(2):使用与扩展PointAnimation 上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation。 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看到多少人会这么用,毕竟WPF做的软件多数不需要这么花俏。
888 0
|
前端开发 容器
Silverlight & Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)
原文:Silverlight & Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)   说到对象的旋转,或许就会联想到对象角度的概念。
949 0
|
Python Windows
pygame经典sprite精灵类
import cStringIO, base64 import pygame from pygame.locals import * class Ball(pygame.
1274 0