第八讲 NEC扩展API
1. 引言
在上讲中,我们对网络的相关功能进行了解说。截止上讲以前的讲座,我们讲述的都是关于MIDP的JAVA相关技术的内容,本讲将收尾,介绍NEC扩展API。
2. NEC扩展
NEC扩展API中有如下的类。 类 AudioClip AudioListener ImageEffector ImageMap 处理声音数据类。已在第五讲解说。 Audio事务监听器。已在第五讲解说。 颜色变换类。将在本讲解说。 模拟PCG(プログラマブルキャラクタジェネレータ)类。因为能轻松的把多种画面分配在格子里,所以能很容易的制作出背景和棋面(ImageMap)。不在本讲解说。 Media NxCanvas NxGraphics PhoneControl Sprite SpriteSet
关于上表的ImageEffector、NxCanvas、NxGraphics、Sprite、SpriteSet,我们将按顺序展开介绍。
2.1. 扩展图形类
NxGraphics 类是Graphics 的扩展类。下面介绍可以实现的Sprite、ImageMap的描画以及矩形区域的复制。NxGraphics 类定义了以下方法。
void copyArea(int sx, int sy, int width, int height, int dx, int dy)
把Canvas描画的矩形区域复制后描画。利用此功能能够把描画过一次的东西复制下来进行描画,因此当描画相同内容的拷贝时,可以简化步骤。
void drawImageMap(ImageMap map, int x, int y)
对将多种画面分配在格子里的ImageMap进行描画。
取得媒体数据类。已在第五讲解说。 NEC扩展canvas,支持多重按键。将在本讲解说。 NEC扩展Graphics。描画Sprite、ImageMap。将在本讲解说。 控制震动、逆光类。不在本讲解说。 Sprite类。将在本讲解说。 管理Sprite类。将在本讲解说。 void drawSpriteSet(SpriteSet sprites)
下面展示的是使用copyArea方法的范例。该范例使用copyArea对移动球的一部分进行复制。 import java.util.Timer; import java.util.TimerTask;
import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image;
import com.nec.graphics.NxGraphics; /**
* copyArea范例动画canvas */
public class CopyAreaMovingBallCanvas extends Canvas {
/**
* 构造函数 */
public TimerMovingBallCanvas() {
//读取画面 try{ }
img = Image.createImage(\e.printStackTrace();
}catch(Exception e){ private int x; //球的x坐标 private Image img; private Timer timer; private TimerTask task;
描画Sprite。后面有Sprite的相关介绍。 取得NxGraphics对象。
static NxGraphics getNxGraphics(javax.microedition.lcdui.Graphics g)
} /**
// 设定Timer,TimerTask timer = new Timer();
task = new TimerMovingBallTask(this);
timer.schedule(task, 100, 100); //从100毫秒后起每100毫秒执行一次任务
* 描画方法 */
protected void paint(Graphics g) { } /**
* 改变球的x坐标 */
public void increment() { } /**
* timer task
* 根据计时器设定的时间表执行run()方法。
x += 3; //清除画面
g.setColor(255, 255, 255); //白
g.fillRect(0, 0, getWidth(), getHeight()); //查看球
g.setColor(255, 0, 0);
g.drawString(\g.fillArc(x, 50, 40, 40, 0, 360);
//复制矩形区域
NxGraphics ng = NxGraphics.getNxGraphics(g); ng.copyArea(x,50,20,20,x,100);
}
*/
class TimerMovingBallTask extends TimerTask { }
private TimerMovingBallCanvas canvas; /**
* 构造函数 * @param canvas */
public TimerMovingBallTask(TimerMovingBallCanvas canvas) { } /**
* 被计时器呼叫时进行的处理 */
public void run() { }
canvas.increment(); canvas.repaint(); this.canvas = canvas;
运行结果如下所示。
相关推荐: