Canvas帮助我们处理低级系统事件。 重绘事件 一个是用低级API的系统至少要具有描绘画面的能力。 startApp(){ MyCanvas mc=new MyCanvas(); display.setCurrent(mc); } public class MyCanvas extends Canvas { public void paint(Graphics g){ { //code of paint. } } serviceRepaints()用来强制队列中的重绘事件快点做完。 坐标系 迪卡尔坐标系的Y轴方向向下就是我们屏幕上的坐标系。 坐标 是指像素(Pixel)和像素之间的空格所构成的坐标。 Graphics--画布 setColor(R,G,B) --value0~255 getRedComponent() getGreenComponent() getBuleComponent() setColor(0x00RRGGBB) / getDisplayColor(); 线 drawLine(start X,start Y,end X,end Y) 笔触(stroke style)--Graphics.SOLID 、Graphics.DOTTED setStrokeStyle(Graphics.SOLID ) 矩形 drawRect(start X,start Y,width,height) 圆角矩形 drawRoundRect(start X,start Y,width,height,arcWidth,arcHeight) 后两个参数:圆角所在矩形的宽和高。 填充矩形 fillRect(start X,start Y,width,height) 填充圆角矩形 fillRoundRect(start X,start Y,width,height,arcWidth,arcHeight) 弧形 drawArc(start X,start Y,width,height,arc,over) 前四个参数决定弧形所在的矩形范围,第五个决定起始角度,第六个决定弧形本身所涵盖的角度。 填充三角形 fillTriangle(x1,y1,x2,y2,x3,y3) Canvas与屏幕事件处理 Canvas本身有两种状态: 普通状态-Normal 全屏状态-Full Screen setFullScreenMode()来设定其状态。 当屏幕被系统画面覆盖时,自动调用hideNotify() 当系统画面消失时,恢复了原本的画面,系统会调用showNotify() 键盘事件处理 按下按钮引发keyPressed() 函数,传入一个代表该键的整数值 放开按钮引发keyReleased()函数,传入一个代表该键的整数值 连按按钮引发KeyRepeated()函数,传入一个代表该键的整数值; 不是所有机器都支持,hasRepeatEvents()来询问系统是否支持连发事件。 键盘响应 Canvas类里定义的常数:KEY_NUM0~KEY_NUM9、KEY_STAR,KEY_POUND分别代表0~9数字键和星井键。另外定义了几个与Game键盘代码相关的常数:UP,DOWN,LEFT,RIGHT,FIRE,GAME_A,GAME_B,GAME_C,GAME_D getGameAction() 该函数传入keyCode,函数会回传所代表的Game键盘代码 switch(getGameAction(keyCode)) { case Canvas.LEFT: moveLeft(); break; getKeyCode() 该函数传入Game键盘代码,函数会回传所代表的keyCode。 和上个函数互为反函数。 if (keyCode==getKeyCode(Canvas.LEFT)) moveLeft(); 触摸屏事件 用hasPointerEvents()判断是否支持触摸屏事件。 触控笔点击 引发pointerPressed(),传入xy坐标 放开引发pointerReleased(),传入xy坐标。 拖拽 pointerDragged() (某些机器可以,用hasPointerMotionEvents()判断) 
|