|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。2、完美周边工具类(图像、GameObject、Font)
固然我们有了midp2.0的撑持,可是偶然仍是必要一些帮助工具,便利我们利用。这怕是在举行真实的游戏计划之前最风趣的了。
1,起首是一个ImageTools工具类,供应一个办法匡助挪用Image
publicclassImageTools{
protectedImageTools(){
}
publicstaticImagegetImage(Stringstr){
Imageimg=null;
try{
img=Image.createImage(str);
}
catch(Exceptionex){
System.out.println(ex);
}
finally{
returnimg;
}
}
}
2.GameObject,供应一个通用的游戏对象。
有了Sprite类,为何还要GameObject呢?实在我们通常为将Sprite,看做成一个初级的Image,常常一个Sprite要被多个游戏对象挪用,GameObject实在就是Sprite的形态类。GameObject供应复杂的性命周期观点,动画更新速率;
publicclassGameObject{
publicSpritesprite;//内置的Sprite
publicbooleanalive;//存活标志
privateintlifecount=0;//性命周期计数器
publicintlifetime=0;//性命周期,以桢为单元
publicintspeed=0;//动画桢更新速率,(0至无量,0代表每桢跟新一个画面)
privateintanimcount=0;///动画桢更新计数器
publicGameObject(Imageimg,intwidth,intheight){
sprite=newSprite(img,width,height);
reset();
}
publicvoidmove(intdx,intdy){//绝对挪动
sprite.move(dx,dy);
}
publicvoidmoveto(intx,inty){//相对挪动
sprite.setPosition(x,y);
}
publicvoidupdate(){//更新形态,动画桢更新,性命周期更新
if(!alive)
return;
if(++animcount>speed){
animcount=0;
sprite.nextFrame();
if(lifetime!=0&&++lifecount>lifetime)
alive=false;
}
}
publicvoidpaint(Graphicsg){//Paint
if(!alive)
return;
sprite.paint(g);
}
publicvoidreset(){//复位
alive=true;
lifecount=0;
animcount=0;
sprite.setFrame(0);
}
}
3.封装字体类,你必要大度的字体吗?
我们常常必要用图片来输入笔墨,一个便利的字体类是必需的。我们但愿仅仅供应一个图片,一个图片所形貌的字符的数组,来初始化一个字体类。字体类供应一个相似Textout的办法,便利得在一个地位输入信息。先封装一个复杂的版本,只撑持英文和数字,而且输入不克不及主动换行。大概你有一个复杂的思绪,就是复杂的保留字符数组,当打印的时分遍历数组,来查找每一个字符在sprite的frameseq中的index,但当我们打印一个字符串的时分就会发明,太多的遍历操纵延误了可贵工夫,这里我们利用一个小技能用容量调换速率,我们晓得Character.hashCode()能够前往字符的ascii编码,经常使用字符将前往1-127;使用这一点,我们启示一个128的数组charhash,将输出的字符c地点图片index存进charhash[c.hashCode()]中。今后也用这类映照办法来读取字符。charhash的元素初值为-1,今后只需数值年夜于0就是无效值。
publicclassFont{
Spritesprite;//Sprite
intwidth,height;//每一个char的尺寸
int[]charhash;//贮存1-127个罕见字符在sprite的frameseq中的地位
Graphicsg;
publicFont(Graphicsg,Imageimg,intwidth,intheight,char[]chars){
this.g=g;
sprite=newSprite(img,width,height);
this.width=width;
this.height=height;
charhash=newint[128];
for(inti=0;i<charhash.length;i++){
charhash[i]=-1;//没有代表此字符的图片
}
Characterc;
for(inti=0;i<chars.length;i++){
c=newCharacter(chars[i]);
charhash[c.hashCode()]=i;
}
}
publicvoiddrawChar(charch,intx,inty){
Characterc=newCharacter(ch);
inthashcode=c.hashCode();
sprite.setPosition(x,y);
if(hashcode>=0){
sprite.setFrame(charhash[hashcode]);
sprite.paint(g);
}
}
publicvoiddrawString(Stringstr,intx,inty){
intlength=str.length();
for(inti=0;i<length;i++){
drawChar(str.charAt(i),x+width*i,y);
}
}
}
如许只需有一个实例font,就能够挪用font.drawString(“hello”,0,0);
在0,0地位输入大度的图片字符串。怎样还挺好使的吧:)
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。 |
|