AndEngine暂停功能的实现

最近由于特殊情况,没法玩魔兽了(哎,不能刷风剑了,还剩半个头啊~),但从另一方面来讲,可以更专心的投入到我的开发工作中,目前Beta Release进度80%,霍霍~
很多游戏的设计需要有暂停功能(很可能是绝大多数游戏),这样的功能在AndEngine中其实是一个很简单的例子,就一行代码
mEngine.stop();

暂停游戏后,继续游戏则是
mEngine.start();

游戏有暂停功能,或者游戏过程中打开设置菜单后游戏自动暂停
可是,加进去后一运行,发现了一个很严重的缺陷
尼玛,界面上的按键全部失效,点啥都没反应。。。。究其原因,是因为整个游戏的进程都是由Engine类驱动的,所有构建在AndEngine上的方法/操作都要依靠Engine对象才能实现,Engine停止了,当然所有的东西都不work了
这样的话,只能是通过手机上的实体按键功能来让Engine.start起来,而且AndEngine中提供的实例也是这样实现的~
很显然,只是通过有限的几个实体按键无法满足具体的需求。。
好吧,瞎扯半天,开始贴代码

final MenuScene menuScene=new MenuScene(mCamera);
TextureRegion menuTextureRegion=mGameTextureManager.GetTextureRegion(ButtonAndBackground, ROCKET_ID);
final int centerX=(CAMERA_WIDTH-menuTextureRegion.getWidth())/2;
final int centerY=(CAMERA_HEIGHT-menuTextureRegion.getHeight())/2;
SpriteBackground backgroundsprite=new SpriteBackground(centerX, centerY, menuTextureRegion);
final TiledSprite toggleButton = new TiledSprite(centerX,centerY,this.mToggleButtonTextureRegion){
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) {
//Do your work
}
return true;
}
};

menuScene.setBackground(backgroundsprite);
menuScene.attachChild(toggleButton);
menuScene.registerTouchArea(toggleButton);
mMainScene.setChildScene(menuScene, true, true, true);

我发现当我尝试这个方法时,游戏中的一切活动都神奇的停止了,包括正在飞的子弹,以及后台正在运行的线程(好吧,不要问我,我也不知道为什么。。)
(PS:除了MenuScene,CameraScene很可能也可以实现相同的效果,但具体结果以及他们的区别我没有验证。。)
等等,除了刚刚添加的menuScene,屏幕其他地方怎么都黑啦?太山寨了吧,不高端!
加上这句
menuScene.setBackgroundEnabled(false);

你傻啊~把background设置为false后,那如果我想要给menuScene加背景怎么办?
menuScene.attachChild(backgroundsprite);

好吧,除了调用的方法不同以外,视觉效果实在是可以做到和background一模一样。。。
我承认一开始我也在menuScene.setBackground(SpriteBackground); 上面纠结了半天,浪费了很多时间后,使用menuScene.attachChild(backgroundsprite);完美的得到了自己想要的效果
是不是很搞笑??
有时候,可能很多时候经验都是非常重要的,书上写的不一定全部都对,正统的setBackground方法可能无法完成你的需求,这时候经验就有很大的几率能够救你一命,至于我们研究/学习的过程,也可以称之为经验的积累
这可能也是我为什么要写下这些的原因~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值