貪吃蛇用滑動控制方向

在android SDK 自帶的sample snake,只能通過上下左右方向鍵控制貪吃蛇的方向,

模擬器上玩沒有問題,裝到手機後基本玩不了,本着自己豐衣足食的精神,做了點小小的改動,

通過手機屏滑動來控制方向,

主要涉及的類public GestureDetector (GestureDetector.OnGestureListener listener),是一個觸摸手勢識別類,

在綁定的監聽器listener需要實現GestureDetector.OnGestureListener接口中的一些方法,這裏我們主要是實現

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY)方法

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.d("TAG", "onFling");
System.out.println("onFling");
if(Math.abs(e1.getY()-e2.getY())>Math.abs(e1.getX()-e2.getX()))//取絕對值來判斷是水平滑動還是垂直滑動
{
if(e1.getY()>e2.getY())
{
System.out.println("up");
mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_UP, null);
}
else
{
System.out.println("down");
mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_DOWN, null);
}

}
else
{
if(e1.getX()>e2.getX())
{
System.out.println("lef");
mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null);
}
else if(e1.getX()<e2.getX())
{
System.out.println("right");
mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
}
}


return false;
}

其次我們要在在mSnakeView上添加一個OnTouchListener監聽器,即mSnakeView.setOnTouchListener(OnTouchListener l)

要實現OnTouchListener接口中的

public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return gesturedetector.onTouchEvent(event);

}

完成以上後基本的工作就完成了,軟件安裝到手機後,還是無法識別滑動手勢,很是苦惱,後發現少了點東西,

 mSnakeView.setLongClickable(true);

這個一定得加上,不然不會調用onFling這個方法



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章