2012-04-03 9 views
0

Ich möchte ein einfaches Spiel erstellen und ich möchte die andengine verwenden.Andengine Demo Nullpointer

Also habe ich beschlossen, mit diesem Code, um die Bibliothek zu testen:

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); 
} 
} 

ich durchweg eine Nullpointer in der Bibliothek (Basegameactivity). Das Bild man.png befindet sich in/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(); 
    } 

Fehler:

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)

Bitte helfen.

+0

Ihr Null-Zeiger ist aus der Klasse Basegameactivity kommen. Der Code, den Sie gepostet haben, ist nicht das, was den Fehler verursacht. Die Zeile in logcat 'verursacht durch: java.lang.NullPointerException bei org.anddev.andengine.ui.activity.BaseGameActivity.onCreate (BaseGameActivity.java:65)' sollte ein guter Hinweis darauf sein, wo Sie suchen sollten. Sehen Sie sich Zeile 65 in BaseGameActivity – dymmeh

+0

an, wie ich oben geschrieben habe, benutze ich das Framework und das ist eine Standardklasse (ich baue es nicht), so muss der Fehler in meinem Code sein – user547995

+0

Nun, entsprechend der Logcat-Ausgabe ist der Fehler von der Rahmen. Entweder ist im Framework ein Fehler enthalten oder Sie verpassen einen Schritt in Ihrer Klasse, um die Basisklasse ordnungsgemäß einzurichten. – dymmeh

Antwort

3

Ihre Methode

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

kehrt null. Mit Blick auf dem Quellcode von Basegameactivity werden Sie sehen, dass in der onCreate es versucht, es ist mengine Variable zu setzen, indem this.mEngine = this.onLoadEngine(); Aufruf, die Ihre onLoadEngine rufen() -Methode und die Rückkehr null

nächstes es eine Methode aus den Variablen zugreifen versucht Verwenden des Anrufs this.applyEngineOptions(this.mEngine.getEngineOptions());

Da mEngine zu diesem Zeitpunkt null ist, wird die Nullzeigerausnahme ausgelöst.

Vervollständigen Sie Ihre onLoadEngine Methode, um richtig den Motor zu initialisieren und die Nullpointer wird

Ref festgesetzt: BaseGameActivity source code