AndEngine中实现两个Scene切换

官方的例子中没有相关的代码,但是这个功能在游戏中又是非常常用的。

经过读源码和试验终于知道可以通过Engine的setScene(Scene pScene)方法可以实现。

我定义了两个Scene:FirstScene & SecondScene,分别拥有不同的背景颜色。

程序加载时使用FirstScene,当点击任何一个Scene时屏幕切换到另外一个Scene。

我把Engine对象作为静态常量放在一个公共类中方便随时访问。

类Constants

public class Constants {
	public static Engine mEngine;
	public static final float CAMERA_WIDTH = 480;
	public static final float CAMERA_HEIGHT = 800;
}

类FirstScene

public class FirstScene extends Scene {
	public FirstScene() {
		this.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
	}

	@Override
	public boolean onSceneTouchEvent(TouchEvent pSceneTouchEvent) {
		if (pSceneTouchEvent.isActionUp())
			Constants.mEngine.setScene(new SecondScene());
		return super.onSceneTouchEvent(pSceneTouchEvent);
	}
}

类SecondScene

public class SecondScene extends Scene {
	public SecondScene() {
		this.setBackground(new Background(0.99804f, 0.6274f, 0.8784f));
	}

	@Override
	public boolean onSceneTouchEvent(TouchEvent pSceneTouchEvent) {
		if (pSceneTouchEvent.isActionUp())
			Constants.mEngine.setScene(new FirstScene());
		return super.onSceneTouchEvent(pSceneTouchEvent);
	}
}

程序入口MainActivity

public class MainActivity extends SimpleBaseGameActivity {

	public EngineOptions onCreateEngineOptions() {
		final Camera camera = new Camera(0, 0, Constants.CAMERA_WIDTH,
				Constants.CAMERA_HEIGHT);

		final EngineOptions engineOptions = new EngineOptions(true,
				ScreenOrientation.PORTRAIT_FIXED, new RatioResolutionPolicy(
						Constants.CAMERA_WIDTH, Constants.CAMERA_HEIGHT),
				camera);
		return engineOptions;
	}

	@Override
	protected void onCreateResources() {
		Constants.mEngine = this.mEngine;
	}

	@Override
	protected Scene onCreateScene() {
		this.mEngine.registerUpdateHandler(new FPSLogger());

		return new FirstScene();
	}
}

希望能对大家有帮助,如有不对之处请指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值