2013-07-14 4 views
0

Я пытаюсь создать простую сцену и показать ее, но это не сработает, и я не могу найти то, что я делаю неправильно.Двигатель Andengine не устанавливает сцену

Вот моя основная деятельность

public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener{ 
final static String TAG = "BounceTest"; 
Scene scene; 
float downX; 
float downY; 

@Override 
public EngineOptions onCreateEngineOptions() { 
    Log.d(TAG, "onCreateEngineOptions"); 
    return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), new Camera(0, 0, 800, 480)); 
} 

@Override 
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception { 
    Log.d(TAG, "onCreateResources"); 
} 

@Override 
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception { 
    Log.d(TAG, "onCreateScene"); 
    scene = new Scene(){ 
     @Override 
     protected void onManagedUpdate(float pSecondsElapsed) { 
      Log.d(TAG, "onManagedUpdate"); 
      super.onManagedUpdate(pSecondsElapsed); 
     } 
    }; 
    this.getEngine().setScene(scene); 
    scene.setOnSceneTouchListener(this); 
} 

@Override 
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception { 
    Log.d(TAG, "onPopulateScene"); 
    Rectangle floor = new Rectangle(-200, 0, 1000, 20, this.getVertexBufferObjectManager()); 
    Rectangle square = new Rectangle(0, 20, 20, 20, this.getVertexBufferObjectManager()); 
    scene.attachChild(floor); 
    scene.attachChild(square); 
} 

@Override 
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 
    Log.d(TAG, "onSceneTouchEvent"); 
    if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){ 
     downX = pSceneTouchEvent.getX(); 
     downY = pSceneTouchEvent.getY(); 
    }else if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP){ 
     float upX = pSceneTouchEvent.getX(); 
     float upY = pSceneTouchEvent.getY(); 
     float xDiff = downX - upX; 
     float yDiff = downY - upY; 
     float dragLength = (float)Math.sqrt(xDiff*xDiff+yDiff*yDiff); 
     Log.d(TAG, "dragLength:"+dragLength); 
    } 

    return false; 
} 

} 

Все, что я могу видеть на моем телефоне, это черный экран (прямоугольники не существует), то «onManagedUpdate» не показывает и прикасаясь к экрану не будет вызывать onSceneTouchEvent.

Почему это так?

ответ

3

true для вызова onSceneTouchEvent. Finishe callback методы, когда они передают один метод другим в методах жизненного цикла двигателя. Добавьте ниже 3 строки к соответствующим методам.

pOnCreateResourcesCallback.onCreateResourcesFinished(); after onCreateResources() finished 

pOnCreateSceneCallback.onCreateSceneFinished(mScene); after onCreateScene() finished 

pOnPopulateSceneCallback.onPopulateSceneFinished(); after onPopulateScene() finished. 

Как:

@Override 
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception { 
    Log.d(TAG, "onCreateResources"); 
    // your code will be here 
    // call this callback; 
    pOnCreateResourcesCallback.onCreateResourcesFinished(); 
} 

@Override 
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception { 
    Log.d(TAG, "onCreateScene"); 

    // your code will be here 
    // call this callback; 
    pOnCreateSceneCallback.onCreateSceneFinished(mScene); 
} 

@Override 
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception { 
    Log.d(TAG, "onPopulateScene"); 

    // your code will be here 

    // call this callback; 
    pOnPopulateSceneCallback.onPopulateSceneFinished(); 
} 
+0

что сделал трюк. Спасибо! –

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