|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
双缓冲手艺的使用很普遍,计划游戏的时分更是必要它。在midp1.0中,api中并没有game这个包,看到网上良多人在会商计划游戏的时分会呈现图片段裂,屏幕闪灼等成绩。
我经由这几天的进修收拾下本人的进修心得,用来抛砖,但愿对此有研讨妙手们互相会商。让我也进修进修。
双缓冲的道理能够如许抽象的了解:把电脑屏幕看做一块黑板。起首我们在内存情况中创建一个“假造“的黑板,然后在这块黑板上绘制庞大的图形,等图形全体绘制终了的时分,再一次性的把内存中绘制好的图形“拷贝”到另外一块黑板(屏幕)上。接纳这类办法能够进步画图速率,极年夜的改良画图效果。
关于手机来讲。详细的历程就是经由过程extendsCanvas。然后猎取bufferImage。再然后就getGraphics。最初就是在这个graphics中绘制图片等,再最初就是把这个绘制好的bufferImage绘制的屏幕上。
说回说。详细仍是要看代码的。内里的代码参照了一些开源的代码。
java代码
packageorg.wuhua.game;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.lcdui.Image;
/**
*类名:GameCanvas.java
编写日期:2006-11-29
程序功效形貌:
*完成双缓冲的Game画布。完成道理是创立一个BufferImage。然后绘制,最初显现出来。就这么复杂。
Demo:
Bug:
*
*
*程序变动日期:
变动
变动申明:
*
*@authorwuhua
*/
publicabstractclassGameCanvasextendsCanvas{
/**
*绘制缓冲的图片。用户绘制资本的时分都是操纵这个图片来举行的
*/
privateImagebufferImage;
privateintheight;
privateintwidth;
privateintclipX,clipY,clipWidth,clipHeight;
privatebooleansetClip;
protectedGameCanvas(){
super();
width=getWidth();
height=getHeight();
this.bufferImage=Image.createImage(width,height);
}
protectedvoidpaint(Graphicsg){
//假如请求绘制指定地区的话就必要如许了
if(this.setClip){
g.clipRect(this.clipX,this.clipY,this.clipWidth,this.clipHeight);
this.setClip=false;
}
g.drawImage(this.bufferImage,0,0,Graphics.TOP|Graphics.LEFT);
}
publicvoidflushGraphics(intx,inty,intwidth,intheight){
this.setClip=true;
this.clipX=x;
this.clipY=y;
this.clipWidth=width;
this.clipHeight=height;
repaint();
serviceRepaints();
}
publicvoidflushGraphics(){
repaint();
serviceRepaints();
}
/**
*计划者次要是经由过程挪用这个办法猎取图片。然后就能够绘制了
*@return
*/
protectedGraphicsgetGraphics(){
returnthis.bufferImage.getGraphics();
}
/**
*这个办法次要是处置Nokia平台,用户挪用setFullScreenMode(booleanenable)时从头依照新的w&h创立缓冲图片
*/
protectedfinalvoidsizeChanged(intw,inth){
if(h>height){
this.bufferImage=Image.createImage(w,h);
}
}
}
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。 |
|