最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
J2ME 2D小游戏入门之旅(二)完善周边工具类
时间:2022-07-02 17:43:49 编辑:袖梨 来源:一聚教程网
二、完善周边工具类(图象、GameObject、Font)
虽然我们有了midp2.0的支持,但是有时还是需要一些辅助工具,方便我们使用。这怕是在进行真正的游戏设计之前最有趣的了。
1,首先是一个ImageTools工具类,提供一个方法帮助调用Image
public class ImageTools {
protected ImageTools() {
}
public static Image getImage(String str){
Image img=null;
try {
img = Image.createImage(str);
}
catch (Exception ex) {
System.out.println(ex);
}
finally{
return img;
}
}
}
2.GameObject,提供一个通用的游戏对象。
有了Sprite类,为什么还要GameObject呢?其实我们一般是将Sprite,看作成一个高级的Image,往往一个Sprite要被多个游戏对象调用,GameObject其实就是Sprite的状态类。GameObject提供简单的生命周期概念,动画更新速度;
public class GameObject {
public Sprite sprite;//内置的Sprite
public boolean alive;//存活标记
private int lifecount=0;//生命周期计数器
public int lifetime=0;//生命周期,以桢为单位
public int speed=0;//动画桢更新速度,(0至无穷,0代表每一桢跟新一个画面)
private int animcount=0;// /动画桢更新计数器
public GameObject(Image img,int width,int height){
sprite=new Sprite(img,width,height);
reset();
}
public void move(int dx,int dy){//相对移动
sprite.move(dx,dy);
}
public void moveto(int x,int y){//绝对移动
sprite.setPosition(x,y);
}
public void update(){//更新状态,动画桢更新,生命周期更新
if(!alive)
return;
if(++animcount>speed){
animcount=0;
sprite.nextFrame();
if(lifetime!=0 && ++lifecount>lifetime)
alive=false;
}
}
public void paint(Graphics g){//Paint
if(!alive)
return;
sprite.paint(g);
}
public void reset(){//复位
alive=true;
虽然我们有了midp2.0的支持,但是有时还是需要一些辅助工具,方便我们使用。这怕是在进行真正的游戏设计之前最有趣的了。
1,首先是一个ImageTools工具类,提供一个方法帮助调用Image
public class ImageTools {
protected ImageTools() {
}
public static Image getImage(String str){
Image img=null;
try {
img = Image.createImage(str);
}
catch (Exception ex) {
System.out.println(ex);
}
finally{
return img;
}
}
}
2.GameObject,提供一个通用的游戏对象。
有了Sprite类,为什么还要GameObject呢?其实我们一般是将Sprite,看作成一个高级的Image,往往一个Sprite要被多个游戏对象调用,GameObject其实就是Sprite的状态类。GameObject提供简单的生命周期概念,动画更新速度;
public class GameObject {
public Sprite sprite;//内置的Sprite
public boolean alive;//存活标记
private int lifecount=0;//生命周期计数器
public int lifetime=0;//生命周期,以桢为单位
public int speed=0;//动画桢更新速度,(0至无穷,0代表每一桢跟新一个画面)
private int animcount=0;// /动画桢更新计数器
public GameObject(Image img,int width,int height){
sprite=new Sprite(img,width,height);
reset();
}
public void move(int dx,int dy){//相对移动
sprite.move(dx,dy);
}
public void moveto(int x,int y){//绝对移动
sprite.setPosition(x,y);
}
public void update(){//更新状态,动画桢更新,生命周期更新
if(!alive)
return;
if(++animcount>speed){
animcount=0;
sprite.nextFrame();
if(lifetime!=0 && ++lifecount>lifetime)
alive=false;
}
}
public void paint(Graphics g){//Paint
if(!alive)
return;
sprite.paint(g);
}
public void reset(){//复位
alive=true;
相关文章
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21
- 《潜行者2:切尔诺贝利之心》使用手电筒方法介绍 11-21