我在Android上玩游戏,我有一个函数MoveCharacter(int direction),在按下按钮时移动动画精灵
例如,当用户按下时,我有以下代码:
mControls.UpButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mLevel.mCharAnimation.FrameUp();
}
});
但是,只要用户按下按钮,我就能继续移动角色。 令人惊讶的是,我还没有发现如何在Android中执行此操作。 是否有某种onButtonDownLister?
答案 0 :(得分:19)
您需要使用OnTouchListener为向下,向上和其他状态分别执行操作。
mControls.UpButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Do something
return true;
case MotionEvent.ACTION_UP:
// No longer down
return true;
}
return false;
}
});
答案 1 :(得分:1)
正如Gary Bak的评论中所提到的,你会想要检测用户是否也将手指拖到按钮外。
mButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Pressed down
return true;
case MotionEvent.ACTION_UP:
// Released
return true;
case MotionEvent.ACTION_CANCEL:
// Released - Dragged finger outside
return true;
}
return false;
}
});
答案 2 :(得分:0)
你想要onTouchListener()。基本上,这将允许您查看触摸对象的时间,查看用户如何移动他们的手指,并知道何时放手。
答案 3 :(得分:0)
您可以使用OnTouchListener
代替
mControls.UpButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mLevel.mCharAnimation.FrameUp();
break;
case MotionEvent.ACTION_UP:
// User released the button, do your stuff here
break;
}
return false;
}
});