2012-04-03 10 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); 
} 
} 

私はオールウェイズライブラリ(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

あなたのNULLポインタがクラス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のソースコードを見ると、あなたはそれがその変数からメソッドにアクセスしようとするあなたのonLoadEngine()メソッドを呼び出し、nullを

次を返している this.mEngine = this.onLoadEngine();を呼び出してのonCreateで、それはそれはmEngine変数の設定しようとしていることがわかりますthis.applyEngineOptions(this.mEngine.getEngineOptions());

この時点でmEngineがnullであるため、NULLポインタ例外がスローされます。

は、エンジンを適切に初期化するために、あなたのonLoadEngine方法を完了し、NullPointerExceptionが

参考に固定されます。BaseGameActivity source code