2013-11-09 2 views
0

저는 AndEngine이 새로 생겼고 레이블이 하나만있는 버튼이 하나있는 메뉴로 장면을 만들려고합니다. 여기 안드로이드 : MenuScene with AndEngine

코드를

public class TestActivity extends SimpleBaseGameActivity implements IOnMenuItemClickListener 
{ 
    static final int CAMERA_WIDTH = 800; 
    static final int CAMERA_HEIGHT = 480; 
    Camera mCamera; 
    @Override 
    public EngineOptions onCreateEngineOptions() 
    { 
     mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 
     return new EngineOptions(true, 
           ScreenOrientation.LANDSCAPE_SENSOR, 
           new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), 
           mCamera); 
    } 

    @Override 
    protected void onCreateResources() 
    { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    protected Scene onCreateScene() 
    { 
     //Scene scene = new Scene(); 
     //scene.setBackground(new Background(0.09804f, 0.6274f, 0)); 
     //Entity layer = new Entity(); 
     //scene.attachChild(layer); 

     Font mFont = FontFactory.create(this.getFontManager(), 
             this.getTextureManager(), 
             256, 256, 
             Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 
             32); 
     mFont.load(); 

     //Text centerText = new Text(100, 40, mFont, "Hello AndEngine!\nYou can even have multilined text!", new TextOptions(HorizontalAlign.CENTER), this.getVertexBufferObjectManager()); 
     //layer.attachChild(centerText); 

     TextMenuItem playText = new TextMenuItem(1, mFont, "TEXT_TO_DISPLAY", 
               this.getVertexBufferObjectManager()); 
     MenuScene ms = new MenuScene(); 
     ms.addMenuItem(playText); 
     ms.setBackground(new Background(0.09804f, 0.6274f, 0)); 
     //ms.buildAnimations(); 
     //ms.setBackgroundEnabled(false); 

     ms.setOnMenuItemClickListener(this); 
     //scene.attachChild(ms); 

     return ms; 
    } 

    @Override 
    public boolean onMenuItemClicked(MenuScene pMenuScene, IMenuItem pMenuItem, 
            float pMenuItemLocalX, float pMenuItemLocalY) 
    { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 

응용 프로그램이 충돌 내가 여기

가 나는 것으로 나타났습니다

11-09 07:57:17.670: E/dalvikvm(3960): GC_EXPLICIT freed 186K, 42% free 8192K/13955K, paused 21ms+64ms, total 212ms 
11-09 07:57:17.900: E/dalvikvm(3960): GC_EXPLICIT freed 68K, 42% free 8172K/13955K, paused 118ms+33ms, total 179ms 
11-09 07:57:17.910: W/dalvikvm(3960): threadid=13: thread exiting with uncaught exception (group=0x4187c438) 

로그 고양이 스택 추적입니다 그것을 해결하는 방법을 얻을 수 없다 buildAnimations()의 주석을 제거하면 nullPointer 예외가 발생합니다.

+0

logcat에 스택 추적을 표시합니다. –

+0

logcat info please, 그러면 문제를 발견 할 수 있습니다. –

+0

코드에서'MenuScene' 클래스의 기본 생성자 만 사용하고 카메라를 연결하지 않았습니다 ('setCamera()'사용). 아니면'MenuScene'의 다른 생성자를 사용할 수도 있습니다. –

답변

4

AndEngine, MenuSceneCameraScene을 확장하고 CameraScene을 제대로 작동 시키려면 Camera 객체에 대한 참조가 필요합니다.

기본 생성자를 사용하여 MenuScene 객체를 만드는 경우 AndEngine이 장면을 업데이트하기 전에 (유효한 카메라 객체가 필요함) Camera 객체를 설정해야합니다 (setCamera() 메서드를 통해). 카메라 매개 변수가있는 다른 생성자를 직접 사용할 수도 있습니다.