JAVA网页编程之J2ME中利用Canvas制造复杂的游戏菜单
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的菜单 我们晓得MIDP的图形用户界面分为两类,分离是初级图形用户界面和初级用户界面。一样平常来说初级图形用户界面类利用起来对照便利,可移植性强,可是程序员对他的把持才能也很低,由于它们的界面体现是由底层把持的,而不是我们把持的。比拟初级UI类,初级UI类则利用起来更难一些,可是把持才能更强,能够做出本人必要的界面。Canvas和Graphics是我们必需纯熟利用的两个类,分离代表了画布和画笔(现实上更丰厚,临时这么比方)。而我们则是画画的人,而引导我们怎样下笔的就是javadoc了,再加上勤劳勉力必定能够画出不错的界面。好比tabbed菜单,二级菜单等。这里我们报告一个复杂菜单的制造体例。
在画菜单的时分,必要思索两面的成绩,第一是盘算绝对地位,让菜单可以尽量顺应更多的机型,只管少利用相对值。比方画上面的菜单的时分
我们应当盘算菜单的每一个条目标高度,这些能够有Font的高度算出,固然你能够给条目留一些padding的间隔。还应当盘算条目标最宽值,究竟每一个条目标字数纷歧样。如许基础晓得了全部菜单占的空间。最初还必要盘算菜单在屏幕的地位。菜单的绘制以下所示:
publicvoidpaint(Graphicsg){
//扫除屏幕
intcolor=g.getColor();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
//盘算全部菜单的高度,宽度和(x,y)
intrectWidth=preferWidth;
intrectHeight=preferHeight*LABELS.length;
intx=(getWidth()-rectWidth)/2;
inty=(getHeight()-rectHeight)/2;
//画矩形
g.drawRect(x,y,rectWidth,rectHeight);
for(inti=1;i<LABELS.length;i++){
g.drawLine(x,y+preferHeight*i,x+rectWidth,y+preferHeight*i);
}
//画菜单选项,并依据selected的值判别核心
for(intj=0;j<LABELS.length;j++){
if(selected==j){
g.setColor(0x6699cc);
g.fillRect(x+1,y+j*preferHeight+1,rectWidth-1,preferHeight-1);
g.setColor(color);
}
g.drawString(LABELS,x+8,y+j*preferHeight+4,Graphics.LEFT|Graphics.TOP);
}
}
第二个主要的成绩是:核心的切换,在初级UI类中,这是不必要我们处置的。可是利用Canvas制造菜单必要本人来处置核心的挪动,这里我们界说一个int范例变量selected,来纪录核心地点的菜单条目地位,也就是选择的索引。当用户按键的时分,我们在keyPressed()办法中判别用户的挪动偏向,对selected举行相干的加减运算,然后repaint()全部屏幕便可。
publicvoidkeyPressed(intkeyCode){
//依据用户输出更新selected的值,偏重新绘制屏幕
intaction=this.getGameAction(keyCode);
switch(action){
caseCanvas.FIRE:
printLabel(selected);
break;
caseCanvas.DOWN:
selected=(selected+1)%4;
break;
caseCanvas.UP:{
if(--selected<0){
selected+=4;
}
break;
}
default:
break;
}
repaint();
serviceRepaints();
}
如许我们就制造出了一个基础的菜单,你还能够发扬设想给被选中的菜单增添动画效果。MenuCanvas的代码以下所示:
packagecom.j2medev.chapter3;
importjavax.microedition.lcdui.*;
publicclassMenuCanvasextendsCanvas{
//selected变量标志了核心地位
privateintselected=0;
privateintpreferWidth=-1;
privateintpreferHeight=-1;
publicstaticfinalint[]OPTIONS={0,1,2,3};
publicstaticfinalString[]LABELS={"NewGame","Setttings","HighScores","Exit"};
publicMenuCanvas(){
selected=OPTIONS;
//盘算菜单选项的长度和高度值
Fontf=Font.getDefaultFont();
for(inti=0;i<LABELS.length;i++){
inttemp=f.stringWidth(LABELS);
if(temp>preferWidth){
preferWidth=temp;
}
}
preferWidth=preferWidth+2*8;
preferHeight=f.getHeight()+2*4;
}
publicvoidpaint(Graphicsg){
//扫除屏幕
intcolor=g.getColor();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
//盘算全部菜单的高度,宽度和(x,y)
intrectWidth=preferWidth;
intrectHeight=preferHeight*LABELS.length;
intx=(getWidth()-rectWidth)/2;
inty=(getHeight()-rectHeight)/2;
//画矩形
g.drawRect(x,y,rectWidth,rectHeight);
for(inti=1;i<LABELS.length;i++){
g.drawLine(x,y+preferHeight*i,x+rectWidth,y+preferHeight*i);
}
//画菜单选项,并依据selected的值判别核心
for(intj=0;j<LABELS.length;j++){
if(selected==j){
g.setColor(0x6699cc);
g.fillRect(x+1,y+j*preferHeight+1,rectWidth-1,preferHeight-1);
g.setColor(color);
}
g.drawString(LABELS,x+8,y+j*preferHeight+4,Graphics.LEFT|Graphics.TOP);
}
}
publicvoidkeyPressed(intkeyCode){
//依据用户输出更新selected的值,偏重新绘制屏幕
intaction=this.getGameAction(keyCode);
switch(action){
caseCanvas.FIRE:
printLabel(selected);
break;
caseCanvas.DOWN:
selected=(selected+1)%4;
break;
caseCanvas.UP:{
if(--selected<0){
selected+=4;
}
break;
}
default:
break;
}
repaint();
serviceRepaints();
}
//showNotify()在paint()之前被挪用
publicvoidshowNotify(){
System.out.println("showNotify()iscalled");
}
privatevoidprintLabel(intselected){
System.out.println(LABELS);
}
}
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试) 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种使网页(Web Page)产生生动活泼画面的语言 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) Java是一种计算机编程语言,拥有跨平台、面向对java 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
页:
[1]