gpt4 book ai didi

java - 无法解析符号 setOnTouchListener

转载 作者:行者123 更新时间:2023-12-01 11:29:44 28 4
gpt4 key购买 nike

我想设置一个仅在玩家对象被触摸时发生的触摸事件。但为什么我的播放器类仍然无法使用 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com