当前位置:  编程技术>移动开发
本页文章导读:
    ▪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中其实是一个很简单的例子,就一行代码
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位图 不是同一种格式?  还是数据存储时的原因? 

 

本例运行截图如下:


 

源码如下在附件处

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3