2013-07-26 2 views
1

Я создаю живые обои на основе расширения AndEngine Live Wallpaper. В функции onCreateScene() Я установил событие касания к своей сцене. Вот код:Android ACTION_UP и ACTION_MOVE не работают в живых обоях AndEngine

@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 мини) ..., когда я касаюсь на экране в первый раз, в журнале пишет:

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? Кто знает? Как решить эту проблему?

+0

проблема решена! – zharski

+1

Вы должны отправить ответ ... – OrhanC1

ответ

1

Я решаю это, переопределяя класс 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) { 
} 

Я надеюсь, что это может помочь людям с той же проблемой;)

 Смежные вопросы

  • Нет связанных вопросов^_^