下面展示利用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
相关推荐: