0

簡単な質問: 私はこのコードを持っています:

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 例外が発生するのはなぜですか?

ありがとうございました!

4

1 に答える 1

1

以下のように使用している再生音について

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

Zancudoここではアクティビティ オブジェクトがクラスでインスタンス化されていないため、これが問題のように見えます。

testSound にアクセスするには、 Zancudoアクティビティのインスタンスを取得する必要があります。

于 2012-08-22T06:32:13.457 に答える