2012-04-03 2 views
0

간단한 게임을 만들고 싶습니다. andengine을 사용하고 싶습니다. Andengine Demo Nullpointer

그래서 나는이 코드 라이브러리를 테스트하기로 결정

public class PrisonBreakActivity extends BaseGameActivity { 

    private ZoomCamera mCamera; 
    private BitmapTextureAtlas mTexture; 
    private TextureRegion mFaceTextureRegion; 
    private Scene mScene; 

    private static final int CAMERA_WIDTH = 720; 
    private static final int CAMERA_HEIGHT = 480; 

    /** Called when the activity is first created. */ 

    @Override 
    public Engine onLoadEngine() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onLoadResources() { 
     this.mTexture = new BitmapTextureAtlas(64, 64, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
     this.mFaceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/man.png", 0, 0); 

     this.mEngine.getTextureManager().loadTexture(this.mTexture); 

    } 

    @Override 
    public Scene onLoadScene() { 
     this.mEngine.registerUpdateHandler(new FPSLogger()); 

     this.mScene = new Scene(); 
     this.mScene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f)); 

     this.mScene.setOnSceneTouchListener(new IOnSceneTouchListener() { 
       @Override 
       public boolean onSceneTouchEvent(Scene pScene, 
         TouchEvent pSceneTouchEvent) { 
        // TODO Auto-generated method stub 
        if(pSceneTouchEvent.isActionDown()) { 
         PrisonBreakActivity.this.loadNewTexture(); 
       } 

       return true; 
       } 
     }); 

     return this.mScene; 
    } 

    @Override 
    public void onLoadComplete() { 
     // TODO Auto-generated method stub 

    } 

    private void loadNewTexture() { 

     MathUtils mu = new MathUtils(); 

     //final TextureRegion faceTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/man.png", 0, 0); 
     final float x = (CAMERA_WIDTH - mFaceTextureRegion.getWidth()) * mu.RANDOM.nextFloat(); 
     final float y = (CAMERA_HEIGHT - mFaceTextureRegion.getHeight()) * mu.RANDOM.nextFloat(); 
     final Sprite clickToUnload = new Sprite(x, y, mFaceTextureRegion); 
     this.mScene.attachChild(clickToUnload); 
} 
} 

나는에 allways 라이브러리 (BaseGameActivity)에서 NullPointerException이 얻을. 이미지 man.png는/asset/gfx /에 있습니다.

GameBaseActivity (from Andengine, Error in applyEngineOptions): 

    @Override 
    protected void onCreate(final Bundle pSavedInstanceState) { 
     super.onCreate(pSavedInstanceState); 
     this.mPaused = true; 

     this.mEngine = this.onLoadEngine(); 

     this.applyEngineOptions(this.mEngine.getEngineOptions()); 

     this.onSetContentView(); 
    } 

오류 :

04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)

04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)

04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)

04-03 16:22:27.238: E/AndroidRuntime(425): at android.os.Handler.dispatchMessage(Handler.java:99) 04-03 16:22:27.238: E/AndroidRuntime(425): at android.os.Looper.loop(Looper.java:123) 04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread.main(ActivityThread.java:4627) 04-03 16:22:27.238: E/AndroidRuntime(425): at java.lang.reflect.Method.invokeNative(Native Method) 04-03 16:22:27.238: E/AndroidRuntime(425): at java.lang.reflect.Method.invoke(Method.java:521) 04-03 16:22:27.238: E/AndroidRuntime(425): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-03 16:22:27.238: E/AndroidRuntime(425): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-03 16:22:27.238: E/AndroidRuntime(425): at dalvik.system.NativeStart.main(Native Method) 04-03 16:22:27.238: E/AndroidRuntime(425): Caused by: java.lang.NullPointerException 04-03 16:22:27.238: E/AndroidRuntime(425): at org.anddev.andengine.ui.activity.BaseGameActivity.onCreate(BaseGameActivity.java:65) 04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-03 16:22:27.238: E/AndroidRuntime(425): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

도와주세요.

+0

귀하의 널 포인터 클래스 BaseGameActivity에서 오는됩니다. 게시 한 코드는 오류를 던지고있는 것이 아닙니다. logcat '의 행 : org.anddev.andengine.ui.activity.BaseGameActivity.onCreate (BaseGameActivity.java:65)의 java.lang.NullPointerException'은 어디서 볼 수 있는지 좋은 힌트 여야합니다. BaseGameActivity – dymmeh

+0

에서 65 행을보세요. 프레임 워크를 사용하고 있으며 표준 클래스 (빌드하지 않음)를 사용하고 있기 때문에 오류가 내 코드에 포함되어야합니다. – user547995

+0

Logcat 출력에 따르면 오류는 다음과 같습니다. 프레임 워크. 따라서 프레임 워크에 버그가 있거나 기본 클래스를 올바르게 설정하기 위해 클래스에서 단계가 누락되었습니다. – dymmeh

답변

3

귀하의 방법

public Engine onLoadEngine() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

는 null을 반환합니다. BaseGameActivity의 소스 코드를 보면 당신은에서 onCreate 그것은 당신의 onLoadEngine() 메소드를 호출 this.mEngine = this.onLoadEngine();를 호출하고 널 (null)이

옆에 그 변수에서 방법을 액세스하려고 반환하여이 mEngine 변수의 설정하려고에이 표시됩니다 this.applyEngineOptions(this.mEngine.getEngineOptions());

이 시점에서 mEngine이 null이므로 null 포인터 예외가 throw됩니다.

제대로 엔진을 초기화하기 위해 onLoadEngine 방법을 완료하고, NullPointerException가

참조 고정됩니다 BaseGameActivity source code