簡體   English   中英

Android ACTION_UP和ACTION_MOVE在動態壁紙AndEngine中不起作用

[英]Android ACTION_UP and ACTION_MOVE doesn't work in live wallpaper AndEngine

我正在基於AndEngine動態壁紙擴展創建動態壁紙。 在函數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 Live Wallpaper Extension中不可用? 誰知道? 如何解決這個問題呢?

我通過重新實現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) {
}

我希望這可以對遇到同樣問題的人有所幫助;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM