NEC手机JAVA中级讲座-第八讲 NEC扩展 联系客服

发布时间 : 星期四 文章NEC手机JAVA中级讲座-第八讲 NEC扩展更新完毕开始阅读71244821dd36a32d73758199

下面展示利用ImageEffector的演示程序。该程序把画面上球的颜色变换后的结果在画面下表示出来。

import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet;

import javax.microedition.midlet.MIDletStateChangeException; /**

* 进行Sprite test的演示程序 */

public class ImageEffectorSample extends MIDlet { }

import javax.microedition.lcdui.Canvas;

Display display;

ImageEffectorCanvas canvas; /**

* 构造函数 */

public ImageEffectorSample(){ } /**

* 程序的打开方法 */

protected void startApp() throws MIDletStateChangeException { }

protected void pauseApp() { }

protected void destroyApp(boolean arg0) throws MIDletStateChangeException { }

display.setCurrent(canvas); display = Display.getDisplay(this); canvas = new ImageEffectorCanvas();

import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image;

import com.nec.graphics.ImageEffector; import com.nec.graphics.ImageMap; import com.nec.graphics.NxGraphics; import com.nec.graphics.Sprite; import com.nec.graphics.SpriteSet; /**

* 颜色变换test用canvas */

public class ImageEffectorCanvas extends Canvas{

private final String IMAGE_PATH = \

private Image img = null; private Sprite ball1 = null; private Sprite ball2 = null; private SpriteSet spriteSet; private ImageMap im; /**

* 构造函数 */

public ImageEffectorCanvas(){

//读取画面 try { }

//Sprite的初始化

spriteSet = new SpriteSet(2);

img = Image.createImage(IMAGE_PATH); e.printStackTrace(); } catch (Exception e) {

}

} /**

ball1 = spriteSet.getSprite(0); ball2 = spriteSet.getSprite(1);

if(img != null){ }

//球1的初始化 ball1.setImage(img); ball1.setLocation(0,0); ball1.setVisible(true); //进行画面转换

int colormap[][] = {{0,0,0},

{0,0,255}, {255,255,255}, {0,0,0}};

Image img2 =ImageEffector.changeColors(img,colormap,4); ball2.setImage(img2); ball2.setLocation(100,100); ball2.setVisible(true);

* 描画方法 */

protected void paint(Graphics g) { }

//取得NEC扩展Graphics

NxGraphics ng = NxGraphics.getNxGraphics(g); ng.drawSpriteSet(spriteSet);

运行上述演示程序后的结果如下所示。

2.4. 多重按键

利用NEC扩展Canvas的NxCanvas类,能够判断同时按下两个按键。利用该多重按键功能,例如,人物在画面上活动时,可以实现斜向移动。(例如,按右键+下键,向右下移动等)。NxCanvas 类中有以下方法。

int getPressedKeys()

我们可以利用getPressedKeys 方法判断被按的按键。按键信息32bit被分为8bit单位,其中包括由canvas类定义的KEY_NUM1等キーパッド信息。 也就是说,我们同时按“0”和“1”时,

例) 【0】按键(Keycode=48)和【1】按键(Keycode=49)同时被按时 00000000 00000000 00110000 00110001 |----未使用 经常0----| 【0】 【1】

getPressedKeys()的返回值变为12337

由于两个按键被特别指定,值必须被分成8bit单位,如下所示,所以可以取得キーパッド的信息。

int key1 = getPressedKeys() % 256; int key2 = (getPressedKeys() – key1) / 256