使用Layer类和Sprite类实现手机游戏的动画效果
2009-09-23 13:20
726 查看
[align=left]所有计算机游戏的图形的核心都是动画,没有动画,也就没有移动,没有了移动,只能玩猜字游戏和益智游戏。在MIDP 2.0 API包含了对精灵动画的支持。在MIDP编程中,使得精灵动画成为可能的两个主要的类是Layer类和Sprite类。Layer类对一个叫做图层(layer)的通用图形对象建模,该对象充当精灵和其他图形游戏对象的基础。可以把游戏中的任何离散的可视元素都看作一个单独的图层。从编程的角度来看,Layer类跟踪一个可视元素的位置、宽度、高度和可见性等信息。[/align]
[align=left]Layer类是一个抽象类,即意味着其不可以直接创建一个Layer对象的实例。但是可以创建一个派生自Layer的对象的实例,例如Sprite或者设计者从Sprite派生来的类。Layer类的子类必须实现它们自己的Paint()方法,以便它们能够绘图。图层的初始位置是(0,0),它会相对于传递给图层的paint()方法的Grphics对象的坐标系进行解释。[/align]
[align=left]下面是定义于Layer类中的方法,在使用图层和精灵的时候,这些方法都很重要。[/align]
[align=left]·getX()——获得图层左上角的X位置;[/align]
[align=left]·getY()——获得图层左上角的Y位置;[/align]
[align=left]·getWidth()——获得图层的宽度;[/align]
[align=left]·getHeight()——获得图层的高度;[/align]
[align=left]·setPosition()——设置图层左上角的XY位置;[/align]
[align=left]·move()——根据给定的XY量来移动图层;[/align]
[align=left]·isVisible()——获得图层的可见性;[/align]
[align=left]·setVisible()——设置图层的可见性;[/align]
[align=left]·paint()——在派生自Layer类的子类中重写。[/align]
[align=left]Sprite类通过提供额外的两维图形对象所需的功能,从而构建于Layer类之上。Sprite类所提供的额外的功能主要包括:[/align]
[align=left]·基于图形的精灵,以及支持多帧图像;[/align]
[align=left]·一个精灵的图像可以变形(游戏,反射等);[/align]
[align=left]·可以定义一个参考像素,作为精灵变形和定位的基础;[/align]
[align=left]·对于带有多帧图像的[/align]
[align=left]精灵,图像显示的顺序可以精确设定;[/align]
[align=left]·精灵之间的冲突可以使用矩形,缩小的矩形或图像数据来进行冲突检测;[/align]
[align=left]Sprite类为手机游戏编程提供了相当多的功能。如果要根据一个图像来创建一个精灵,只要把一个新创建的Image对象传递到Sprite的构造函数中即可,在我的游戏中实现如下:[/align]
try{
Sprite ShipSprite=new Sprite(Image.createImage(“/*.png”));
ShipSprite.setPosition(0,0);
}
catch (IOException e){
System.err.println(“^_^对不起,下载图片发生错误^_^”);
}
[align=left]Layer类是一个抽象类,即意味着其不可以直接创建一个Layer对象的实例。但是可以创建一个派生自Layer的对象的实例,例如Sprite或者设计者从Sprite派生来的类。Layer类的子类必须实现它们自己的Paint()方法,以便它们能够绘图。图层的初始位置是(0,0),它会相对于传递给图层的paint()方法的Grphics对象的坐标系进行解释。[/align]
[align=left]下面是定义于Layer类中的方法,在使用图层和精灵的时候,这些方法都很重要。[/align]
[align=left]·getX()——获得图层左上角的X位置;[/align]
[align=left]·getY()——获得图层左上角的Y位置;[/align]
[align=left]·getWidth()——获得图层的宽度;[/align]
[align=left]·getHeight()——获得图层的高度;[/align]
[align=left]·setPosition()——设置图层左上角的XY位置;[/align]
[align=left]·move()——根据给定的XY量来移动图层;[/align]
[align=left]·isVisible()——获得图层的可见性;[/align]
[align=left]·setVisible()——设置图层的可见性;[/align]
[align=left]·paint()——在派生自Layer类的子类中重写。[/align]
[align=left]Sprite类通过提供额外的两维图形对象所需的功能,从而构建于Layer类之上。Sprite类所提供的额外的功能主要包括:[/align]
[align=left]·基于图形的精灵,以及支持多帧图像;[/align]
[align=left]·一个精灵的图像可以变形(游戏,反射等);[/align]
[align=left]·可以定义一个参考像素,作为精灵变形和定位的基础;[/align]
[align=left]·对于带有多帧图像的[/align]
[align=left]精灵,图像显示的顺序可以精确设定;[/align]
[align=left]·精灵之间的冲突可以使用矩形,缩小的矩形或图像数据来进行冲突检测;[/align]
[align=left]Sprite类为手机游戏编程提供了相当多的功能。如果要根据一个图像来创建一个精灵,只要把一个新创建的Image对象传递到Sprite的构造函数中即可,在我的游戏中实现如下:[/align]
try{
Sprite ShipSprite=new Sprite(Image.createImage(“/*.png”));
ShipSprite.setPosition(0,0);
}
catch (IOException e){
System.err.println(“^_^对不起,下载图片发生错误^_^”);
}
相关文章推荐
- 使用Layer类和Sprite类实现手机游戏的动画效果
- Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)
- android游戏开发框架libgdx的使用(二十三)—使用Universal Tween Engine实现动画效果
- iOS使用UICountingLabel实现数字变化的动画效果
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(四)----使用PlayerPrefs存储数据到本地
- 推荐9款使用CSS3实现的超酷动画效果
- SpriteBuilder&Cocos2D使用CCEffect特效实现天黑天亮过度效果
- 安卓仿手机QQ消息BadgeView气泡跟随手指移动,并实现进出动画效果。
- 超慢速移动动画使用CSS3实现流畅效果
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- 超慢速移动动画使用CSS3实现流畅效果
- cocos2d-x 使用action实现各种动画效果
- 在安卓中使用Animation类实现基础动画效果
- android 使用Path实现搜索动态加载动画效果
- android初学------使用ScaleAnimation 动画实现放大缩小效果
- 不使用JS,使用CSS3 target 以及 动画效果实现,点击一下弹出,并且保持弹出状态,然后再点击一下弹回的导航栏(或者可以叫做按钮)
- cocos2d-x 使用action实现各种动画效果
- iOS使用UICountingLabel实现数字变化的动画效果
- android 视图动画的使用,Animation重写 实现旋转效果
- 使用CSS3实现超炫的Loading(加载)动画效果