cocos creator 内嵌式webView
版本:cocos creator 引擎版本2.4.11
之前接到一个需求要求在游戏场景中显示一个webview的广告,在广告之上还要有游戏的UI。但是
cocos creator的webview是和游戏不在同一层级的。查看了一下网络上也没有类似的方案,所以做一个记录。
首先目标平台是Android,在Android端cocos的webview是在Android上调用其webview来实现的,而游戏的又是另外的view,
所以就导致了不能随意更改webview的层级。
翻到cocos-andriod源码看到webview的层级是被设置在了最顶层,所有要做的就是
把游戏视图设置到最顶层。
this.mGLSurfaceView.setZOrderOnTop(true);
Cocos2dxActivity.onCreateView 内,设置游戏视图层级最高
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
glSurfaceView.getHolder().setFormat(PixelFormat.RGBA_8888);
AppActivity.onCreateView 内,将游戏视图背景设置为透明
因为需要是要实现可互动式广告的webview,所以再在游戏逻辑里面捕获到触摸事件传递给Android的webview。
public static void sendWebChange(int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
if (paramInt2 == 0)
isCanTouch = Boolean.valueOf(true);
long l = SystemClock.uptimeMillis();
MotionEvent motionEvent = MotionEvent.obtain(l, l, paramInt2, paramInt3, paramInt4, 0);
if (paramInt1 == 0) {
sWeb.onTouchEvent(motionEvent);
} else {
sWeb2.onTouchEvent(motionEvent);
}
motionEvent.recycle();
}
