好的,我创建了一个ontouchlistener类:
package drop.out.Game;
import android.view.MotionEvent;
import android.view.View;
import drop.out.Game.Model.Player;
public final class TrackingTouchListener
implements View.OnTouchListener{
//player class
private final Player mplayer;
Player plyr;
//constructor bringing in the player
TrackingTouchListener(Player plyr){mplayer = plyr;}
//on touch stuff
public boolean onTouch(View v, MotionEvent evt) {
/**@if touching/moving on the left side of screen */
if(MotionEvent.ACTION_DOWN== evt.getAction() && evt.getX() < (v.getWidth()/2) || MotionEvent.ACTION_MOVE== evt.getAction() && evt.getX() <(v.getWidth()/2)){
moveL(mplayer);
}
/**@if touching/moving on the right side of the screen */
if(MotionEvent.ACTION_DOWN== evt.getAction() && evt.getX() > (v.getWidth()/2) || MotionEvent.ACTION_MOVE== evt.getAction() && evt.getX() >(v.getWidth()/2)){
moveR(mplayer);
}
return true;
}
//call functions in the player class that moves the player x by -1
private void moveL(Player player){
player.moveL();
//e.g. player_x -=10;
}
private void moveR(Player player){
player.moveR();
//e.g.player_x +=10;
}
}
不幸的是,只有在按下或拖过屏幕时才更新player_x,我希望当手指在屏幕的以太侧时让它移动。 有什么想法吗?
答案 0 :(得分:0)
如果您没有移动手指,则会停止更新。
您应该设置一个类似move
的布尔标志,而不是从TouchListener调用shouldMove
,然后在shouldMove
为真时以固定间隔发出移动命令。
然后,即使您停止接收触摸事件,您的角色也会继续移动。只需在抬起手指或移出某个区域时清除此布尔值即可。
答案 1 :(得分:0)
你也可以在touchlistener上设置一个x值,然后检查它的位置,以确定主循环中的左边或右边(就像你在触摸监听器内),并在手指抬起时将其设置为0
编辑:所以
if(MotionEvent.ACTION_DOWN== evt.getAction() || MotionEvent.ACTION_MOVE== evt.getAction())
{
moveX = evt.getX();
}
然后检查moveX 并将moveX设置为0;在MotionEvent.ACTION_UP上