2011-11-17 23 views
0

我剛剛編碼了從AndExample複製的以下行。AndEngine SoundManager中的空指針異常

try { 
     this.collision_sound = SoundFactory.createSoundFromAsset(this.mEngine.getSoundManager(), this, "touch.ogg"); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Log.d("Error","in creation "+e); 
    } 

this.collision_sound.play(); 

現在問題是,當我播放聲音時,它給了我一個空指針異常。任何人都可以幫助我解決這個問題?

回答

1

你的代碼似乎很好。嘗試將創建函數放在AndEngine的onLoad()方法中,並在另一個地方調用play()方法。我想你沒有時間讓引擎設置聲音變量。

+0

我已經初始化onLoadEngine中的聲音。以前它是在OnLoadResources中。不幸的是結果是一樣的。在創建時沒有錯誤,但是當我播放聲音時,會出現NullPointerException。我現在應該怎麼做? –

+0

那麼,我從來沒有使用過.ogg文件。只需嘗試一下,使用一個通用的.mp3並再試一次。另外,發佈你的logcat。 – Zappescu

+0

日誌。錯誤在播放空指針異常時出錯。 –

1

最後我得到了問題所在。其實上面的代碼是正確的,我錯過的是,當我創建引擎時,我錯過了爲加載引擎中的聲音設置選項。

new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera).setNeedsSound(true)); 

這解決了我的問題我錯過了.setNeedsSound(true)選項。