版本: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();
    }