注册 登录
主题 : Cocos2d-x JavaActivity 程序背景透明
级别: 版主

状态: 未签到 - [27天]
UID: 300874
精华: 13
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
注册时间: 2014-03-18
最后登录: 2016-05-06
楼主 : 发表于: 2014-08-19 14:55    发自: Web Page
来源于 教程分享 分类

Cocos2d-x JavaActivity 程序背景透明   

管理提醒: 本帖被 小塔 执行提前操作(2014-08-20)
之前发过一篇《如何在Cocos2d-x 3.0rc0中让程序背景透明》,但是由于3.0rc0后Cocos2d-x更改为Java Activity,而不再是Native Activity,使得这种方法失效。

这里以最新的Cocos2d-x 3.2 release为例,介绍如何在Cocos2d-x中让程序背景透明。

一样,先上图。


修改的东西不多。主要有3步。

1.在AndroidManifest.xml中设置Activity背景透明
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

如图,


2.在libcocos2dx项目的org.cocos2dx.lib项目中的Cocos2dxActivity.java文件中,修改init()方法。
增加如下代码:
this.mGLSurfaceView.setZOrderOnTop(true);
this.mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
this.mGLSurfaceView.setEGLConfigChooser(8,8,8,8,16,0);

删除如下代码(如果不删除的话,顶部会有一个Cocos2dxEditText的白条,Cocos2dxEditText封装了EditText,主要用于TextField,如果程序中有使用到它,那建议更换为EditBox)
//mFrameLayout.addView(edittext);
//this.mGLSurfaceView.setCocos2dxEditText(edittext);

如图,

 

3.在libcocos2dx项目的org.cocos2dx.lib项目中的Cocos2dxRenderer.java文件中,修改onSurfaceCreated()方法。
增加如下代码:
pGL10.glDisable(GL10.GL_DITHER);
pGL10.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
pGL10.glClearColor(0, 0, 0, 0);
pGL10.glEnable(GL10.GL_CULL_FACE);
pGL10.glShadeModel(GL10.GL_SMOOTH);

如图,

  好了,如果有更好的办法欢迎跟帖提出。

本工程的下载地址:

本部分内容设定了隐藏,需要回复后才能看到

[ 此帖被偶尔e网事在2014-08-19 15:10重新编辑 ]

清空我的评分动态本帖最近评分记录: 共1条评分记录
小塔 可可豆 +10 2014-08-19 优秀文章
隐藏评分记录
级别: 圣骑士
状态: 未签到 - [13天]
UID: 298324
精华: 6
发帖: 483
可可豆: 800 CB
威望: 798 点
在线时间: 282(时)
注册时间: 2014-03-08
最后登录: 2015-03-20
沙发 : 发表于: 2014-08-19 15:11    发自: Web Page
很好的教程贴!!!
欢迎访问cocos2d-x博客www.zaojiahua.com皂荚花。
级别: 新手上路
状态: 未签到 - [2天]
UID: 156600
精华: 0
发帖: 46
可可豆: 88 CB
威望: 90 点
在线时间: 47(时)
注册时间: 2012-07-22
最后登录: 2015-04-01
板凳 : 发表于: 2014-08-19 15:24    发自: Web Page
你好。这个方法还是不行。我目前的版本是3.1.1。(应该差不多)。我是在mGLSurfaceView下面多加了一个摄像机的层。
级别: 版主

状态: 未签到 - [27天]
UID: 300874
精华: 13
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
注册时间: 2014-03-18
最后登录: 2016-05-06
3 楼:  发表于: 2014-08-19 15:30    发自: Web Page
回 2楼(vvvsnoopy) 的帖子
我这边是用的3.2release,3.1.1应该也是可以的。你先remove掉你那个摄像机层看一下,有没有问题,排除下。

有个老外做了个应用,我猜应该是你想要的方式。我就是参考他的回帖写的。你可以看下

http://discuss.cocos2d-x.org/t/cceglview-background-transparent/975

http://discuss.cocos2d-x.org/t/our-first-app-with-cocos2dx-jack-i-lantern/997
级别: 新手上路
状态: 未签到 - [2天]
UID: 156600
精华: 0
发帖: 46
可可豆: 88 CB
威望: 90 点
在线时间: 47(时)
注册时间: 2012-07-22
最后登录: 2015-04-01
4 楼:  发表于: 2014-08-19 16:13    发自: Web Page
回 3楼(偶尔e网事) 的帖子
我要做的功能跟他类似。不过是更复杂。我试了下,还是不能透明。难道是3.1.1不行吗?不大可能啊。我需要hello透明,黑色部分是摄像头。你的项目例子我跑不起来,不知道为什么。
级别: 新手上路
状态: 未签到 - [2天]
UID: 156600
精华: 0
发帖: 46
可可豆: 88 CB
威望: 90 点
在线时间: 47(时)
注册时间: 2012-07-22
最后登录: 2015-04-01
5 楼:  发表于: 2014-08-19 16:19    发自: Web Page
回 3楼(偶尔e网事) 的帖子
OK了。谢谢你。我可以了。     
级别: 版主

状态: 未签到 - [27天]
UID: 300874
精华: 13
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
注册时间: 2014-03-18
最后登录: 2016-05-06
6 楼:  发表于: 2014-08-19 16:25    发自: Web Page
回 5楼(vvvsnoopy) 的帖子
可以的原因能说下么?

还有你说例子跑不起来,是什么情况?
级别: 新手上路
状态: 未签到 - [2天]
UID: 156600
精华: 0
发帖: 46
可可豆: 88 CB
威望: 90 点
在线时间: 47(时)
注册时间: 2012-07-22
最后登录: 2015-04-01
7 楼:  发表于: 2014-08-19 16:29    发自: Web Page
回 6楼(偶尔e网事) 的帖子
跟你说的一样。唯一的就是这个原因。
if (isAndroidEmulator())
this.mGLSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

3.1.1有这个if (isAndroidEmulator())。估计就没执行下面那个话吧。

例子跑不起来可能是我没编译吧。我3.2编译不起来。build_native.py
级别: 新手上路
UID: 124351
精华: 0
发帖: 35
可可豆: 198 CB
威望: 188 点
在线时间: 56(时)
注册时间: 2012-02-17
最后登录: 2015-06-18
8 楼:  发表于: 2014-08-19 17:13    发自: Web Page
太谢谢了,我按照这教程也OK了
梦想在靠近
级别: 版主

状态: 未签到 - [27天]
UID: 300874
精华: 13
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
注册时间: 2014-03-18
最后登录: 2016-05-06
9 楼:  发表于: 2014-08-19 18:10    发自: Web Page
回 8楼(lybgo) 的帖子
    
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

验证问题:
苹果公司现任CEO是谁?2字 正确答案:库克

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部