0
終於我明白瞭如何處理黑莓手機上的觸摸和手勢事件,但現在我有兩個問題: 1)如何在能夠處理觸摸事件的同時將圖形呈現在另一個圖形上方? 2)如何繪製簡單的矩形觸摸事件,說CLICK?黑莓圖形和觸摸事件?
我的代碼&屏幕:
package mypackage;
import net.rim.device.api.lcdui.game.BlackBerryGameCanvas;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.TouchGesture;
import net.rim.device.api.ui.VirtualKeyboard;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.TouchEvent;
public class MyScreen extends MainScreen
{
LabelField touch_type;
public boolean onMenu(int instance) {
return instance == Menu.INSTANCE_CONTEXT ? false : super.onMenu(instance);
}
public MyScreen()
{
super(NO_SYSTEM_MENU_ITEMS);
getScreen().getVirtualKeyboard().setVisibility(VirtualKeyboard.HIDE_FORCE);
VerticalFieldManager vf = new VerticalFieldManager();
touch_type = new LabelField("SOME TEXT", FIELD_HCENTER);
vf.add(touch_type);
vf.add(new HandleTouch());
add(vf);
}
/*
* Implementing touch handler class
*/
class HandleTouch extends Field {
protected void layout(int width, int height) {
setExtent(360, 460);
}
public void paint(Graphics graphics) {
graphics.drawBitmap(0, 0, this.getWidth(), this.getHeight(), Bitmap.getBitmapResource("bg.png"), 0, 0);
}
protected void drawFocus(Graphics g, boolean on) {}
public boolean isFocusable() { return true;}
public void drawBall(int x, int y) {
}
protected boolean touchEvent(TouchEvent message) {
switch(message.getEvent()) {
case TouchEvent.CLICK:
int x = message.getGlobalX(1);
int y = message.getGlobalY(1);
touch_type.setText("CLICK");
return true;
case TouchEvent.DOWN:
//System.out.println("----------------------------->DOWN");
touch_type.setText("DOWN");
return true;
case TouchEvent.MOVE:
//System.out.println("----------------------------->MOVE");
touch_type.setText("MOVE");
return true;
case TouchEvent.UNCLICK:
//System.out.println("----------------------------->UNCLICK");
touch_type.setText("UNCLICK");
return true;
case TouchEvent.GESTURE:
TouchGesture gesture = message.getGesture();
int gestureCode = gesture.getEvent();
switch (gestureCode) {
case TouchGesture.HOVER:
//System.out.println("----------------------------->HOVER");
touch_type.setText("HOVER");
return true;
case TouchGesture.SWIPE:
//System.out.println("----------------------------->SWIPE");
touch_type.setText("SWIPE");
return true;
case TouchGesture.TAP:
//System.out.println("----------------------------->TAP");
touch_type.setText("TAP");
return true;
case TouchGesture.CLICK_REPEAT:
//System.out.println("----------------------------->CLICK REPEAT");
touch_type.setText("CLICK REPEAT");
return true;
case TouchGesture.DOUBLE_TAP:
//System.out.println("----------------------------->DOUBLE TAP");
touch_type.setText("DOUBLE TAP");
return true;
}
}
//System.out.println("PRINT ME SOMETHING IN ANY CASE");
super.touchEvent(message);
return false;
}
public HandleTouch() {
}
}
}
它對我更有幫助,我是初學者,我幾乎可以理解所有事件。 TNX。 – jaleel 2012-06-05 07:24:48