首先在对象类中,通过 onTouchEvent(event e) 这个方法来获得当前坐标 例如:
然后通过参数的形式 将touchX 和 touchY 传入一个自定义的方法move()中
如图所示,方法中。第一,第二个参数 是对象当前的坐标。 我是通过计算出touch坐标 和当前坐标的夹角的余弦,正弦值,再乘以对象的速度,分别得出对象的分速度。
然后将这个move 方法调入到 单独运行的线程中,不断刷新。那么对象就会以一定速度 向所touch的坐标 移动。
当然,这个方法还不完美,出现的问题有 1:当对象到达所touch的坐标后,会不停地颤动
2:当手离开屏幕的时候,对象还会继续移动
这些问题在后面要继续解决
对于上面的两个问题,我打算声明一个 布尔变量 isMove 来判断 飞机是否需要移动(即手指是否在触摸屏上)
然后修改了onTouchEvent 方法
当手指抬起时,isMove 变为false,然后在move()方法中进行判定,代码如下
修改代码后,发现之前发现的两个问题都解决了。
对于颤抖问题,我想是因为计算的精度问题 所以对象不能精确地移动到 touch 的那点坐标;修改代码后 因为令对象坐标等于当前坐标 就可以消除了这种情况。