2012-08-02 2 views
0

빠른 질문을 만들 때 : 나는이 코드를 가지고 :AndEngine NullPointerException가 소리

public EngineOptions onCreateEngineOptions() { 
    instance = this; 

    mCamera = new org.andengine.engine.camera.Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 

    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera); 
    engineOptions.getAudioOptions().setNeedsSound(true); 
    //engineOptions.getAudioOptions().setNeedsMusic(true); 


    return engineOptions; 

} 

그리고

protected void onCreateResources() { 





    SoundFactory.setAssetBasePath("mfx/"); 



    try { 
     this.testSound = SoundFactory.createSoundFromAsset(this.mEngine.getSoundManager(), this, "explosion.ogg"); 
    } catch (final IOException e) { 
     Debug.e(e); 
    } 
} 

을 내가 마침내 필드로이 활동을 가진 다른 클래스에서 재생할 :

activity.mCurrentScene.registerTouchArea(image); 
    activity.mCurrentScene.setOnAreaTouchListener(new IOnAreaTouchListener() { 

     @Override 
     public boolean onAreaTouched(TouchEvent pSceneTouchEvent, 
       ITouchArea pTouchArea, float pTouchAreaLocalX, 
       float pTouchAreaLocalY) { 
      Zancudo.this.activity.testSound.play(); 
      return false; 
     } 
    }); 

왜 나는 nullpointer 예외가 발생합니까?

감사합니다.

답변

1

플레이 당신은 여기에서 활동 객체가 Zancudo 클래스에서 인스턴스화되지 않기 때문에이 문제처럼 보인다

Zancudo.this.activity.testSound.play(); 

아래처럼 사용하는 소리.

testSound에 액세스하려면 Zancudo 액티비티의 인스턴스를 가져와야합니다.