快速业务通道

使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
eturn; } if(gco!=null) { gco.setCharAct(2,isOnFlat); } }

和我们前面的介绍也是刚好一一对应。

下面我们再来看看Sprite类怎么使用。这里,gfo、gfyo等等精灵我就不讲了,只看看gco,这个精灵是我们游戏的主角,也就是那个跑来跑去跳上跳下的那个小人儿。该精灵对应的素材图片如下:

使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱 - 编程入门网

使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱(4)

时间:2011-01-18 海边沫沫

这个图片的文件名为char.png,不难看出,第一帧图象是站立不动时的效果,第2-5帧为向左跑动的效果,第6-9帧为向右跑动的效果,10-13帧为上下跳动的效果。Sprite类有一个构造函数Sprite(Image img,int x, int y),其中第一个参数就是该素材图片,后面的两个参数为每一帧图象的宽和高,至于总共有多少帧图象,Sprite类会自己计算。

gco精灵所对应的类为gameCharObj,从它的构造函数中,我们可以看出它正是以这个图片作为参数的,如下:

public class gameCharObj extends Sprite { static { try { img=Image.createImage("/char.png"); } catch(Exception e){} } public gameCharObj(int X ,int Y) { super(img,16,17); this.defineCollisionRectangle(1,16,15,1); this.x=X; this.y=Y-17; this.setFrameSequence(stand); this.setPosition(this.x,this.y); } }

在Sprite中,我们通过指定不同的帧序列,就可以实现动画,比如下面定义的四个数组,分别代表了站立时、向左跑时、向右跑时和跳起时的动画序列:

private int[] stand={0};

private int[] w_left={1,1,2,2,3,3,4,4};

private int[] w_right={5,5,6,6,7,7,8,8};

private int[] jump={9,9,10,10,11,11,12,12};

当我们需要改变精灵的动画序列的时候,只需要调用Sprite.setFrameSequence()函数即可,如下面这段代码所示:

public void setCharAct(int i,boolean b) //改变人物绘图 { switch(i) { case 0: if(state!=i) { this.setFrameSequence(w_left); state=i; } break; case 1: if(state!=i) { this.setFrameSequence(w_right); state=i; } break; case 2: if((state!=i)||(face!=b)) { this.setFrameSequence(b?stand:jump); state=i; face=b; } break; } }

设置完动画序列后,只有调用Sprite.nextFrame(),精灵才会真正的动起来,这一个调用是在主线程中完成的,大家回到开头就不难看到gco.nextFrame()这样的代码了。

遗憾的是,这个游戏中没有使用到TiledLayer和LayerManager这两个类,所以没有办法让大家看到实例了。当然,要想全面了解游戏开发的各个细节,最好还是找一些专业的书来读。最后,给大家介绍一个非常好的J2ME开发网站:www.j2medev.com,这这里,大家可以找到很多文章和资源。

原文链接:http://www.blogjava.net/youxia/archive/2007/08/18/137785.html

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号