当前位置: 编程技术>移动开发
本页文章导读:
▪AndEngine暂停效能的实现 AndEngine暂停功能的实现
最近由于特殊情况,没法玩魔兽了(哎,不能刷风剑了,还剩半个头啊~),但从另一方面来讲,可以更专心的投入到我的开发工作中,目前Beta Release进度80%,霍霍~.........
▪ 怎么判断移动开发的能力 如何判断移动开发的能力?
我是菜鸟.
......
▪ BitmapPixels示范中AGRB_8888疑问 BitmapPixels示例中AGRB_8888疑问
在本示例中遇到一个问题,无法解决,记录于此~~
在示例BitmapPixels中,为了获取不同格式(AGRB_8888, ARGB_565, ARGB4444)下的颜色值,先将目标颜色的三个.........
[1]AndEngine暂停效能的实现
来源: 互联网 发布时间: 2014-02-18
AndEngine暂停功能的实现
最近由于特殊情况,没法玩魔兽了(哎,不能刷风剑了,还剩半个头啊~),但从另一方面来讲,可以更专心的投入到我的开发工作中,目前Beta Release进度80%,霍霍~
很多游戏的设计需要有暂停功能(很可能是绝大多数游戏),这样的功能在AndEngine中其实是一个很简单的例子,就一行代码
暂停游戏后,继续游戏则是
游戏有暂停功能,或者游戏过程中打开设置菜单后游戏自动暂停
可是,加进去后一运行,发现了一个很严重的缺陷
尼玛,界面上的按键全部失效,点啥都没反应。。。。究其原因,是因为整个游戏的进程都是由Engine类驱动的,所有构建在AndEngine上的方法/操作都要依靠Engine对象才能实现,Engine停止了,当然所有的东西都不work了
这样的话,只能是通过手机上的实体按键功能来让Engine.start起来,而且AndEngine中提供的实例也是这样实现的~
很显然,只是通过有限的几个实体按键无法满足具体的需求。。
好吧,瞎扯半天,开始贴代码
我发现当我尝试这个方法时,游戏中的一切活动都神奇的停止了,包括正在飞的子弹,以及后台正在运行的线程(好吧,不要问我,我也不知道为什么。。)
(PS:除了MenuScene,CameraScene很可能也可以实现相同的效果,但具体结果以及他们的区别我没有验证。。)
等等,除了刚刚添加的menuScene,屏幕其他地方怎么都黑啦?太山寨了吧,不高端!
加上这句
你傻啊~把background设置为false后,那如果我想要给menuScene加背景怎么办?
好吧,除了调用的方法不同以外,视觉效果实在是可以做到和background一模一样。。。
我承认一开始我也在menuScene.setBackground(SpriteBackground); 上面纠结了半天,浪费了很多时间后,使用menuScene.attachChild(backgroundsprite);完美的得到了自己想要的效果
是不是很搞笑??
有时候,可能很多时候经验都是非常重要的,书上写的不一定全部都对,正统的setBackground方法可能无法完成你的需求,这时候经验就有很大的几率能够救你一命,至于我们研究/学习的过程,也可以称之为经验的积累
这可能也是我为什么要写下这些的原因~
最近由于特殊情况,没法玩魔兽了(哎,不能刷风剑了,还剩半个头啊~),但从另一方面来讲,可以更专心的投入到我的开发工作中,目前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方法可能无法完成你的需求,这时候经验就有很大的几率能够救你一命,至于我们研究/学习的过程,也可以称之为经验的积累
这可能也是我为什么要写下这些的原因~
[2] 怎么判断移动开发的能力
来源: 互联网 发布时间: 2014-02-18
如何判断移动开发的能力?
我是菜鸟.
我是菜鸟.
[3] BitmapPixels示范中AGRB_8888疑问
来源: 互联网 发布时间: 2014-02-18
BitmapPixels示例中AGRB_8888疑问
在本示例中遇到一个问题,无法解决,记录于此~~
在示例BitmapPixels中,为了获取不同格式(AGRB_8888, ARGB_565, ARGB4444)下的颜色值,先将目标颜色的三个基色和alpha值分别取出,如下代码所示:
int r = Color.red(c); int g = Color.green(c); int b = Color.blue(c); int a = Color.alpha(c);
然后依据算法将三基色及alpha值计算,获得相应数值,如下代码所示:
r = mul255(r, a); g = mul255(g, a); b = mul255(b, a);
其中int mul() 定义如下:
private static int mul255(int c, int a){ int prod = c * a + 128; return (prod + (prod >> 8)) >> 8; }
然后将运算后的三基色及alpha值封装回颜色整值,如下代码所示:
return pack8888(r, g, b, a);
其中,int pack8888() 方法定义如下:
private static int pack8888(int r, int g, int b, int a){ return (r << 0)|(g << 8)|(b << 16)|(a << 24); }这里就产生这样一个问题:为何要将 ARGB 颜色格式转换为 ABGR???
在这以后的代码中无论分取颜色阶梯,还是构造Buffer,构造Bitmap,都没有涉及到颜色模式的改变,在构造Buffer前使用 Log.d() 日志方法获取的 data8888[0] (即第一张图左上角像素值) 仍为 -16776961 , 该数值在android.graphics.Color 类中为
public static final int BLUE
Constant Value: -16776961 (0xff0000ff)
这就难理解了,为什么 Bitmap.Config.ARGB_8888 能将int值为 -16776961的值显示为红色,而不是蓝色???难道这里 ARGB_8888 与 ARGB 32位图 不是同一种格式? 还是数据存储时的原因?
本例运行截图如下:
源码如下在附件处
最新技术文章: