1.一种cocos2dx嵌入cef实现透明网页的方法,其特征在于,包括以下步骤:S1:在cocos2dx中创建并显示网页层,开启所述网页层的刷新定时器,创建浏览器对象;
S2:创建cef事件处理对象,注册所述事件处理对象到所述浏览器对象;
S3:启动cef消息循环,分发处理消息,将渲染后得到的RGBA的位图数据回调给所述网页层,所述网页层将所述数据缓存到队列尾部;
S4:所述网页层在刷新定时器回调中检测缓存队列中是否有网页数据,若无数据,则重复检测;若有数据,则判断背景精灵是否已创建,若未创建,则使用所述数据创建背景精灵和初始化纹理,若已创建,则使用所述数据更新纹理;
S5:所述网页层检测是否有键盘、鼠标事件触发,若有,则重组消息发送给cef;若无,则执行S4。
2.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,在S1之前还包括:初始化cef环境,创建全局CefApp对象,开启离屏渲染,调用CefInitialize完成初始化。
3.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S1中开启所述网页层的刷新定时器具体包括:调用ScheduleUpdate开启update定时器。
4.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S1中创建浏览器对象具体包括:调用CefBrowserHost::CreateBrowser创建浏览器对象。
5.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S3中将渲染后得到的RGBA的位图数据回调给所述网页层进一步包括:cef通过OnPaint回调出渲染后得到的RGBA的位图数据,通知网页层有数据回调。
6.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,在S3之前还包括:cef通过所述事件处理对象回调出网页显示的大小和位置。
7.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S5中所述网页层检测是否有键盘、鼠标事件触发进一步包括:所述网页层注册mouse down、move和up事件的监听,将收到的坐标封装成windows鼠标消息事件,调用cef的发送鼠标消息接口传递给cef内部响应。
8.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S5中所述网页层检测是否有键盘、鼠标事件触发还进一步包括:所述网页层重定向主窗口的窗口过程,检测到键盘事件时,调用cef的发送键盘消息接口传递给cef内部响应。
9.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,S3中将渲染后得到的RGBA的位图数据回调给所述网页层之前还包括:判断是否有位图数据回调,当有位图数据时,将所述位图数据缓存入队列。
10.根据权利要求1所述的cocos2dx嵌入cef实现透明网页的方法,其特征在于,在S5步骤之后还包括:关闭主窗口时,发送退出消息给cef,等待cef退出循环,调用CefShutdown释放cef环境。