java - 无法解析符号 setOnTouchListener

标签 java android ontouchlistener

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

相关文章:

java - 如何在Web Service Rest中获取数组JSON?

JavaFX : avoid thread-code in Model Setters

java - 使用 GSON 序列化时包括对象类型

iphone - 是否有适用于 iPhone 和/或 Android 手机的好的 OCR API?

Android: View.setClickable 消费点击事件

java - 使用 Saros 与引用的库共享 Eclipse Java 项目

java - 无法获取连接工厂客户端错误,我看不到 map

android - 无法访问 'androidx.lifecycle.HasDefaultViewModelProviderFactory' ,它是 'FavoriteBottomDialogFragment' 的父类(super class)型。检查你的模块分类

android - 如何在 ListPreference 上设置 OnTouchListener()?

android - 模拟 SetOnTouchListener 或它在 xamarin 中的使用方式,参数必须是什么