可并发执行的单位。C和C++采用单线程体系结构,而Java却提供了多线程支持。Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。必须注意地是,Java的多线程支持在一定程度上受运行时支持平台的限制。例如,如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。
8
3 Java技术在游戏开发中的应用
3.1 Applet中的绘图技术
Applet程序中所采用的AWT的绘图机制主要涉及三个方法:paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一个Graphics类参数。Graphics是画图的关键,它可以支持两种绘图:一种是基本的绘图,如:画线、矩形、圆等;另一种是画图象,主要用于动画制作。 要进行绘图,首先要找到一个Graphics类的对象。update()方法和paint()方法所传递的参数都是Graphics类的对象,因此主要是通过重载它们来进行绘图,这是在动画程序中经常使用的方法。我们还可以通过getGraphics()方法得到一个Graphics类的对象,这个对象和update()方法和paint()方法中所传递的对象一样,都是该成员所对应的Graphics类的对象。得到了Graphics类的对象,就可使用各种绘图方法。
Graphics中提供的图形绘制方法有:
paint( ) //进行绘图的具体操作,必须有程序员重写
update( ) //用于更新图形,先清除背景、前景,再调用paint() repaint( ) /*用于重绘图形,在组件外形发生变化,即大小改变或位置移动时,repaint( )方法立即被系统自动调用,而实际上repaint()方法是自动调用update()方法*/
下面的方法支持基本的绘图和画图像: void drawLine( ) void drawArc( ) void drawPolygon( ) void drawRect( ) void drawRoundRect( ) void fill3DRect( ) void fillOval( ) 实例1:
9
Applet的AWT绘制:
class ArcCanvas extends Canvas{ //类ArcCanvas int startAngle=0; int endAngle=45; boolean filled=false; Font font;
public void paint(Graphics g){
//paint方法,该方法的作用是在Canvas上画图 Rectangle r=getBounds(); int hlines=r.height/10; int vlines=r.width/10; g.setColor(Color.pink); for(int i=1;i<=hlines;i++) {
g.drawLine(0,i*10,r.width,i*10); }
for(int i=1;i<=vlines;i++) {
g.drawLine(i*10,0,i*10,r.height); }
g.setColor(Color.red); if(filled) {
g.fillArc(0,0,r.width-1,r.height-1,startAngle,endAngle); } else { g.drawArc(0,0,r.width-1,r.height-1,startAngle, endAngle); }
g.setColor(Color.black); g.setFont(font);
g.drawLine(0,r.height/2,r.width,r.height/2); g.drawLine(r.width/2,0,r.width/2,r.height); g.drawLine(0,,0,r.width,r.height);
10
g.drawLine(r.width,0,0,r.height); int sx=10;
int sy=r.height-28;
g.drawString(“S=”+startAngle,sx,sy); g.drawString(“E=”+ednAngle,sx,sy+14); }
public void redraw(boolean filled,int start,int end){ //重画方法 this.filled=filled; this.startAngle=start; this.endAngle=end;}
11
3.2 游戏开发中的交互
一个优秀的游戏必定是与玩家不断的沟通,给予玩家充分的操作时间,而游戏又必须快速地,正确的对玩家的动作作出反映,否则这样的游戏,不能称为一个好游戏。所以说,游戏开发中的交互与其他技术有着相同的地位,是一个游戏必备的核心。在Java游戏的开发中,往往使用事件处理器来进行设计。 1.事件:用户对程序的某一种功能性操作。
Java中的事件[3]主要有两种: 1)组件类事件
componentEvent、ContainerEvent、WindowEvent、FocusEvent、PaintEvent、MouseEvent共六大类,
它们均是当组件的状态发生变化时产生。 2)动作类事件
ActionEvent、TextEvent、AdjustmentEvent、ItemEvent共四类。 它们均对应用户的某一种功能性操作动作。
Java中的事件类都包含在JDK的Java.awt.event包中。 2.事件编程:
用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。 事件委托授权处理模型
JDK1.1以上版本实现了事件委托授权处理模型的机制。 1) 事件源:产出事件的组件。
2)监听器:对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类(它们可以分别放在不同的程序中)加以编程实现。
3) 事件处理机制:AWT组件自身不编程处理相应的事件,面是交由事件监听器(它可以是组件所在的容器类或另外的Java程序类,只要它们实现了相关的事件监听器接口即可)处理(事件授权处理模型)。
4)事件处理的包:Java.awt.event包,它提供AWT事件所需的类和接口 ActionEvent类对应ActionListener接口;
MouseEvent类对应MouseMotionListener接口和MouseListener接口;
12
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库万鹏 2005911037 java技术在游戏开发的应用(3)在线全文阅读。
相关推荐: