天天看點

Cocos2d-x JavaActivity 程式背景透明

之前發過一篇《如何在Cocos2d-x 3.0rc0中讓程式背景透明》,但是由于3.0-rc0後Cocos2d-x更改為Java Activity,而不再是Native Activity,使得這種方法失效。

這裡以最新的Cocos2d-x 3.2 release為例,介紹如何在Cocos2d-x中讓程式背景透明。

一樣,先上圖:

Cocos2d-x JavaActivity 程式背景透明

:

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

1.在AndroidManifest.xml中設定Activity背景透明

1

android:theme=

"@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

如圖,

Cocos2d-x JavaActivity 程式背景透明

2.在libcocos2dx項目的org.cocos2dx.lib項目中的Cocos2dxActivity.java檔案中,修改init()方法。

增加如下代碼:

1 2 3

this

.mGLSurfaceView.setZOrderOnTop(

true

);

this

.mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

this

.mGLSurfaceView.setEGLConfigChooser(8,8,8,8,16,0);

删除如下代碼(如果不删除的話,頂部會有一個Cocos2dxEditText的白條,Cocos2dxEditText封裝了EditText,主要用于TextField,如果程式中有使用到它,那建議更換為EditBox)

1 2

//mFrameLayout.addView(edittext);

//this.mGLSurfaceView.setCocos2dxEditText(edittext);

如圖,

Cocos2d-x JavaActivity 程式背景透明

3.在libcocos2dx項目的org.cocos2dx.lib項目中的Cocos2dxRenderer.java檔案中,修改onSurfaceCreated()方法。

增加如下代碼:

1 2 3 4 5

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);

如圖,

Cocos2d-x JavaActivity 程式背景透明

點選這裡下載下傳本工程源碼。

好了,如果有更好的辦法歡迎加入論壇,參與本帖的讨論。

來源網址:http://www.cocoachina.com/bbs/read.php?tid=224544