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()判斷)