2012-01-13 35 views
0

我製作了一個3D應用程序(min3D框架),它在佈局中運行。佈局包含一些按鈕來控制遊戲。這工作正常。但佈局看起來比遊戲本身更快,當我觸摸應用程序正在加載的區域時,它會崩潰。如果我等待,不要觸摸該區域,我不會有任何錯誤。一切正常,然後。 我該如何解決這個問題?Android應用程序在加載時崩潰

我現在知道應用程序正在崩潰的地步,它應該添加一個對象,但尚未加載。它的所有內容都在onTouchEvent函數中。但是爲什麼initScene的工作完成了o.O?

的logcat:

01-13 21:17:20.476: E/AndroidRuntime(20189): FATAL EXCEPTION: main 
01-13 21:17:20.476: E/AndroidRuntime(20189): java.lang.NullPointerException 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.appboss.min3d.core.Scene.addChild(Scene.java:112) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.appboss.soyuz.Rocket.onTouchEvent(Rocket.java:250) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.app.Activity.dispatchTouchEvent(Activity.java:2231) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1795) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2336) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.view.ViewRoot.handleMessage(ViewRoot.java:1976) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.os.Looper.loop(Looper.java:150) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at android.app.ActivityThread.main(ActivityThread.java:4277) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at java.lang.reflect.Method.invokeNative(Native Method) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at java.lang.reflect.Method.invoke(Method.java:507) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
01-13 21:17:20.476: E/AndroidRuntime(20189): at dalvik.system.NativeStart.main(Native Method 

+1

你的LogCat說錯誤是什麼? – Blundell 2012-01-13 20:10:36

+0

它現在在描述中。似乎觸摸已經在工作,但物體還沒有放好。 mhh:/ – user1119607 2012-01-13 20:20:29

+0

很高興看到代碼片段。 – 2012-01-13 22:32:04

回答

0

你應該只啓用/次的對象已經被加載添加觸摸監聽器。利用那個時候可能會顯示一個加載對話框/等待屏幕。你的logcat說明其一個NullPointerException

Scene.java,在addChild()方法

0

com.appboss.soyuz.Rocket.onTouchEvent(Rocket.java:250),這是您的罪魁禍首線112。你可以在應用程序完全加載之前捕獲它 - 使標誌isCreated(isLoaded)或其他。在向用戶授予控制權之前是否有加載屏幕?

0

爲什麼不嘗試使用AsyncTask在後臺加載遊戲並彈出一個「Please wait while Game loads」對話框,該對話框將在Asynctask的doInBackground()結束時被解散?

這是我所知道的最好的解決方法,但它假定您不介意一個小的加載對話框。