我想創建一個簡單的遊戲,我想使用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。 Image 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)
請幫助。
你的空指針從類BaseGameActivity到來。你發佈的代碼並不是拋出錯誤的東西。 logcat中的一行代碼引起的:java.lang.NullPointerException在org.anddev.andengine.ui.activity.BaseGameActivity.onCreate(BaseGameActivity.java:65)'應該是一個很好的暗示。看看我在上面寫的BaseGameActivity – dymmeh 2012-04-03 16:28:44
中的第65行,我使用的框架和多數民衆贊成標準類(我不建立它),所以錯誤必須在我的代碼 – user547995 2012-04-03 16:30:12
那麼,根據logcat輸出錯誤是該框架。所以,無論是框架中都有一個bug,或者你缺少一個步驟來正確設置基類。 – dymmeh 2012-04-03 16:38:05