当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

操纵Game API函数制作二维行动游戏[Java编程]

赞助商链接



  本文“操纵Game API函数制作二维行动游戏[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

MIDP 2.0里面包含一个用来简化编写二维游戏的API函数.这个API函数是非常简凑的,只包含javax.microedition.lcdui.game包里的五个类.这五个类主要供应了两个重要的功效:

新的GameCanvas类使得在一个游戏循环体内画一个screen和呼应键盘输入成为大概,而不需求调用系统的paint和input线程.

功效强盛而复杂的图层(layer)API函数可以轻松高效地成立复杂的场景.

muTank Example

操纵GameCanvas类成立一个游戏循环(game loop)

GameCanvas类是附加了功效的Canvas类,它供应了当即重画和查抄设备按键状况的办法.这些新的办法把一个游戏的全部函数(功效)封装在一个循环体内,并由一个单线程举行掌握.为什么这样做就非常吸惹人阿?先让我们考虑一下你是若何履行一个利用了Canvas类的典型游戏的:

public void MicroTankCanvas
extends Canvas
implements Runnable {
public void run() {
while (true) {
// Update the game state.
repaint();
// Delay one time step.
}
}
public void paint(Graphics g) {
// Painting code goes here.
}
protected void keyPressed(int keyCode) {
// Respond to key presses here.
}
}

这不是一个漂亮的画面 .运行在利用程序线程中的run()办法,每一个时间段城市革新游戏.典型的任务是革新小球或飞翔物的位置,绘制人物或飞翔器动画.每一次通过循环体,repaint()办法被用来革新屏幕.系统把按键事件传送给KeyPressed(),它能适本地革新游戏状况.

问题是,每样东西都在差别的线程里,游戏代码在以上三种差别办法里传送很简单混合.当run()办法里的主动画循环体调用repaint()办法时,将没有办法切当知道系统什么时刻调用paint()办法.当系统调用KeyPressed()时,也没有办法知道程序的另一部份正在举行什么.假如你KeyPressed()中的代码将要革新游戏的状况,而同一时刻paint()办法将表现屏幕,这时屏幕将会持续非常奇特的状况.假如表现屏幕所用时间超越一个单时间段,动画会看起来颠簸不定或是很奇特.

GameCanvas类答应你避开常用绘画(painting)和按键消息(key-event)机制,所以全部的游戏逻辑都可以被包含在一个单循环中.首先,GameCanvas类答应你用getGraphics()办法直接拜候Graphics对象.关于所返回的Graphics对象的任何表现(rendering)都可以通过屏幕外缓冲区(offscreen buffer)来实现.你可以用flushGraphics()复制缓冲区到屏幕上,直到屏幕被革新才会返回.这种方法给你供应比调用repaint()办法更完善的掌握.Repaint()办法会当即返回值,以至于你的利用程序不能肯定系统什么时刻会调用paint()来革新屏幕.

GameCanvas类也包含一个用来得到设备按键当前状况的办法,即所谓得polling技术.你可以通过调用GameCanvas类的getKeyStates()办法,即刻肯定哪一个按键被按下,从而代替了等候系统调用KeyPressed()办法.


  以上是“操纵Game API函数制作二维行动游戏[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 操纵Game API函数制作二维行动游戏
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .