Android ACTION_UP 和 ACTION_MOVE 在动态壁纸 AndEngine 中不起作用

标签 android touch andengine live-wallpaper

我正在基于 AndEngine Live Wallpaper Extension 创建动态壁纸。 在函数 onCreateScene() 中,我将触摸事件设置为我的场景。这是代码:

@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) {
  mEngine.registerUpdateHandler(new FPSLogger());

  parallaxBackground = new ParallaxBackground(0, 0, 0);
  parallaxBackground.attachParallaxEntity(new ParallaxEntity(1.0f, mySprite));
  mCurrentScene.setBackground(parallaxBackground);

  mCurrentScene.setOnSceneTouchListener(this);

  pOnCreateSceneCallback.onCreateSceneFinished(mCurrentScene);
}

之后我创建了 onSceneTouchEvent() 函数:

@Override
public boolean onSceneTouchEvent(Scene scene, TouchEvent event) {
switch(event.getAction()){
    case TouchEvent.ACTION_DOWN:                    
        Log.i("Logged TouchEvent DOWN", ""+event.getAction());
        break;
    case TouchEvent.ACTION_MOVE:
        Log.i("Logged TouchEvent MOVE", ""+event.getAction());
        break;
    case TouchEvent.ACTION_UP:
        Log.i("Logged TouchEvent UP", ""+event.getAction());
        break;
}
return true;        
}

这段代码一切正常吗? 好的。我在我的手机(Samsung Galaxy S III mini)上运行它...,当我第一次触摸屏幕时,日志中写着:

AndEngine                     org.andengine.input.touch.TouchEvent$TouchEventPool<TouchEvent> was exhausted, with 0 item not yet recycled. Allocated 1 more.
Logged TouchEvent DOWN        0

当我第二次触摸屏幕时,日志中写着:

Logged TouchEvent DOWN        0
Logged TouchEvent DOWN        0
Logged TouchEvent DOWN        0
Logged TouchEvent DOWN        0
.....

...仅检测到 ACTION_DOWN! ACTION_UP 和 ACTION_MOVE 不起作用!

也许所有触摸事件在 AndEngine 动态壁纸扩展中都不可用?谁知道? 如何解决这个问题?

最佳答案

我通过重新实现 BaseWallpaperGLEngine 类解决了这个问题。

在您的 LiveWallpaperService 中插入此代码:

@Override
public Engine onCreateEngine() {
    return new LiveWallpaperEngine(this);
}

public class LiveWallpaperEngine extends BaseWallpaperGLEngine {

    public LiveWallpaperEngine(IRendererListener pRendererListener) {
        super(pRendererListener);
    }

    @Override
    public void onTouchEvent(MotionEvent event) {
        mEngine.onTouch(null, MotionEvent.obtain(event));
    }
}

@Override
protected void onTap(int pX, int pY) {
}

我希望这对遇到同样问题的人有所帮助;)

关于Android ACTION_UP 和 ACTION_MOVE 在动态壁纸 AndEngine 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17877366/

相关文章:

java - 在 Android 上生成 Azure SAS token

android - 与引擎物理联合

java - android:如何通过BufferedReader访问res/raw目录下的资源

android - 如何在 Kotlin 中滑动 fragment 时选择 BottomNavigationView 中的项目

javascript - Sencha Touch 本地存储代理在删除记录后不删除索引

qt - 如何增加Qt中QPushButton的可点击区域?

java - 将数据从类传递到 Activity

java - Andengine getLastChild() 错误

android - Box2D 启动 AndEngine?

android - 构建apk后的错误