MIDP2.0 Game API简介
|
|
Author: 一滴蔚蓝色 | Date: 2007-11-11 |
View: 1517 |
开发技术 - 新手上路 | Digg:
1
|
|
很就没有关心J2ME的情况了,今天看到一篇介绍MIDP 2.0的文章就翻译了出来,虽然不是很新。偶的E文不好,有错的地方希望大家谅解! 原文出处:http://www.microjava.com/articles/techtalk/game_api MIDP 2.0 为移动开发者带来几项新特性,比如支持媒体、更好的用户界面、新的连通协议、enabled push、空中下载和更好的安全性。然而一个最让人感兴趣的新特性就是GAME API。 这篇文章重点介绍GAME API里的新类和它们的用法,开发环境使用J2ME Wireless Toolkit 2.0 Beta。 The Game API The Game API 帮助开发者(游戏开发者或其他想得到更好用户界面的人)快速开发有较好可用性且节约设备资源(比如内存)的用户界面。The Game API也有利减小jar文件的大小。在MIDP 1.0中,开发者必须写自己的绘图程序来得到好的效果,这导致jar文件的增大。使用MIDP提供的程序可以得到较好的效果并且减小jar文件的大小,因此开发者应该信任所有支持MIDP 2.0 GAME API的设备。 The Game API能在javax.microedition.lcdui.game中找到。API中有5个新类,它们是:GameCanvas, Layer, LayerManager, Sprite和TiledLayer. protected void keyPressed(int keyCode) { int move = 0; int keyState = getKeyStates(); if ((keyState & LEFT_PRESSED) != 0) { // do something } if ((keyState & RIGHT_PRESSED) != 0) { // do something } if ((keyState & UP_PRESSED) != 0) { // do something } if ((keyState & DOWN_PRESSED) != 0) { // do something } } 使用off-screen buffer public void run() { Graphics g = getGraphics(); while (play) { try { // First draw all the layers layers.paint(g, 0, 0); // If the game is on, flush the graphics if (play) { flushGraphics(); } try { mythread.sleep(sleepTime); } catch (java.lang.InterruptedException e) {} } catch (Exception e) { e.printStackTrace(); } } } 使用层 private TiledLayer tiles; private LayerManager layers; private Image tilesImage; public final int TILE_GROUND = 1; public final int TILE_WATER = 2; public final int TILE_SHORE_LEFT = 3; public final int TILE_FOREST = 4; public final int TILE_AIR = 5; public final int TILE_SHORE_RIGHT = 5; // ... // Creating an instance of the TiledLayer layers = new LayerManager(); try { tilesImage = Image.createImage("/Tiles.png"); } catch (IOException e) {} tiles = new TiledLayer(40, 16, tilesImage, 7, 7); // ... // Filling the TiledLayer with tiles tiles.fillCells(0, 0, 40, 16, TILE_AIR); tiles.fillCells(14, 12, 12, 4, TILE_WATER); tiles.fillCells(0, 10, 14, 6, TILE_GROUND); // and more tiles like FOREST and the shores... layers.append(tiles); 使用Sprites sprite = new Sprite(spriteImage, 7, 7); public static final int UP = 0; public static final int RIGHT = 1; public static final int DOWN = 2; public static final int LEFT = 3; // ... switch (direction) { case UP: sprite.move(0, -7); break; case DOWN: sprite.move(0, 7); break; case RIGHT: sprite.move(7, 0); break; case LEFT: sprite.move( -7, 0); break; default: break; } 在游戏中另一个重要的就是判断碰撞。Sprites可以停留在游戏区域中一个特定位置,这对判断Sprites是否和其他物体碰撞是很重要的。在游戏里碰撞意味着改变方向或游戏结束。Sprites用下面4个方法帮助开发者判断碰撞: 总结 更多阅读: |
|
| 最近更新 ( 2008-11-29 ) |
尚无评论发表