AndEngineのサンプルプロジェクト(その4)

 では、Scene 関係のクラスを3本ほど。
 抽象クラスの BaseScene.java です。

package com.chabaori.sample;

import org.andengine.engine.Engine;
import org.andengine.engine.camera.BoundCamera;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.SpriteBackground;
import org.andengine.entity.sprite.Sprite;
import org.andengine.opengl.vbo.VertexBufferObjectManager;

import com.chabaori.sample.SceneManager.SceneType;

public abstract class BaseScene extends Scene{
	protected Engine engine;
	protected MainActivity activity;
	protected ResourcesManager resourcesManager;
	protected VertexBufferObjectManager vbom;
	protected BoundCamera camera;
	protected Sprite background;

	public BaseScene(){
		this.resourcesManager = ResourcesManager.getInstance();
		this.engine = resourcesManager.engine;
		this.activity = resourcesManager.activity;
		this.vbom = resourcesManager.vbom;
		this.camera = resourcesManager.camera;
		createScene();
	}
	
	public abstract void createScene();
	
	public abstract void disposeScene();

	public abstract void onBackKeyPressed();
	
	public abstract SceneType getSceneType();
	
	protected void createBackground(){
		background = new Sprite(MainActivity.CAMERA_WIDTH / 2, MainActivity.CAMERA_HEIGHT / 2, resourcesManager.background_region, vbom);
		setBackground(new SpriteBackground(background));
	}
}

 次に BaseScene を継承した SplashScene.java。

package com.chabaori.sample;

import org.andengine.entity.sprite.Sprite;

import com.chabaori.sample.SceneManager.SceneType;

public class SplashScene extends BaseScene{
	private Sprite splash;
	
	@Override
	public void createScene(){
		createBackground();
    	splash = new Sprite(MainActivity.CAMERA_WIDTH / 2, MainActivity.CAMERA_HEIGHT / 2, resourcesManager.splash_region, vbom);
    	attachChild(splash);
	}

	@Override
	public void onBackKeyPressed(){
		return;
	}

	@Override
	public SceneType getSceneType(){
		return SceneType.SCENE_SPLASH;
	}

	@Override
	public void disposeScene(){
		background.detachSelf();
		background.dispose();
		splash.detachSelf();
		splash.dispose();
		this.detachSelf();
		this.dispose();
	}
}

 そんでもって、BaseScene を継承した GameScene.javaです。Game じゃないけどね。

package com.chabaori.sample;

import org.andengine.entity.sprite.Sprite;

import com.chabaori.sample.SceneManager.SceneType;

public class GameScene extends BaseScene {
	private Sprite sprite;
	
	@Override
	public void createScene(){
		createBackground();
    	Sprite sprite = new Sprite(MainActivity.CAMERA_WIDTH / 2, MainActivity.CAMERA_HEIGHT / 2, resourcesManager.sprite_region, vbom);
    	attachChild(sprite);
	}

	@Override
	public void onBackKeyPressed(){
		System.exit(0);
	}

	@Override
	public SceneType getSceneType(){
		return SceneType.SCENE_GAME;
	}
	
	@Override
	public void disposeScene(){
		background.detachSelf();
		background.dispose();
		sprite.detachSelf();
		sprite.dispose();
		this.detachSelf();
		this.dispose();
	}
}

 これで、一通りの java ファイルが揃ったことになります。
 AndEngine GLES2-AnchorCenter を導入してライブラリに追加すれば動く・・はず。
 
 
 次回、ライブラリ参照を切った Eclipse のプロジェクトアーカイブを載っけます。