贪吃蛇用滑动控制方向

在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这个方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值