我想设置一个仅在玩家对象被触摸时发生的触摸事件。但为什么我的播放器类仍然无法使用 setOnTouchListener
方法?我把它放在一个扩展 SurfaceView 并实现 SurfaceHolder.Callback 的主类中,它说无法解析符号
player.setOnTouchListener(new View.OnTouchListener){
public boolean onTouch(View v, MotionEvent event) {
return true;
}
};
我的玩家类扩展了 GameObject(它只是一个包含对象属性的抽象类)并实现了 View.OnTouchListener。 我还重写了播放器类本身的方法。
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
有什么想法吗?谢谢。
编辑:
@Override
public void surfaceCreated(SurfaceHolder holder){
bg = new Background(BitmapFactory.decodeResource(getResources(),R.drawable.background));
player = new Player(BitmapFactory.decodeResource(getResources(),R.drawable.character),WIDTH/2,HEIGHT/2+40,80,75,14);
safeArea = new SafeArea(WIDTH/2,HEIGHT/2,100,40);
bouncer = new ArrayList<Bouncer>();
thread = new MainThread(getHolder(), this);
//Start the game loop
thread.setRunning(true);
thread.start();
setOnTouchListener(player);
}
最佳答案
正如您所说,player
的类实现了 View.OnTouchListener
。显然类View.OnTouchListener
没有方法setOnTouchListener()
。
你应该检查一下你的 Intent 。您希望 player
实现 View
吗?或者你实际上想设置谁的OnTouchListener
?
由于您的“主类”扩展了 SurfaceView
,所以看起来您可能想要
setOnTouchListener(player);
它将player
设置为“主类”实例的OnTouchListener,它也是一个SurfaceView
,因此也是一个View
。
要定义player.onTouch()
,您应该在Player
类中定义它,如下所示:
class Player implements View.OnTouchListener // extends GameObject ?
{
// ...
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
}
关于java - 无法解析符号 setOnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511290/