在Quick-Cocos2d-x中嵌入浏览器
在游戏中嵌入网页是很常见的需求,Cocos2d-x 引擎官方并没有提供这个功能。
我在网上转了一圈,把找到的资料做了一些修改,将其集成到我们使用的 Quick-Cocos2d-x 引擎中。 主要代码来自: CCXWebview 集成的类叫做 CCWebView,位于 extensions 之中。 效果如下:
显示本博客
在浏览器中输入 做什么? 在游戏中,我们需要显示系统公告,或者制作一些需要复杂图文混排的界面,这些东西如果用 cocos2d-x 来做,未免太过麻烦。嵌入一个网页就简单的多。 现在的修改能满足这样一些简单的使用: 1. 显示一个指定地址的网页,设定网页的大小和位置;
然后,就没有了。因为目前的项目不需要和浏览器交互,所以希望用 CCWebView 来实现一个商城的话可能会比较难办,要做一些扩展。 在 Android 中,浏览器与 Game 并不在一个线程,因此也没有提供把让cocos2d-x 来控制增加浏览器的关闭按钮之类的功能。如果要实现这些,最好的方法是浏览器不做全屏,然后用cocos2d-x实现一些按钮放在浏览器之上,点击按钮调用 CCWebView 的关闭函数。 怎么做? 这里只放出lua代码,C++请脑补。 创建内嵌浏览器并显示一个网站:
更新已有浏览器中显示的网址,移除并销毁浏览器:
封装
需要注意的是,在上面的例子中,如果希望改变已有的内嵌浏览器的大小,必须先remove才可以生效。
跨平台 目前内嵌浏览器仅支持 iOS 和Android 平台。以下是一些需要注意的地方:Android 平台 在创建CCWebView的时候必须提供你的项目的主Activity的包路径和类名。CCWebView 需要结合主Activity中提供的一些方法才能工作。这些方法我已经添加到项目模板中。 注意写包路径和类名的格式与JAVA的习惯不同,需要把点 . 替换成斜线 / 。 使用 getActivityName() 方法可以返回传入的包名。 iOS 平台 iOS不需要提供包名,因此可以直接使用不带参数的 create() 方法来创建 CCWebView 。但为了避免判断平台使用不同的创建方法,也可以直接传入 Android 中需要的包名。iOS平台下的代码不会记录和处理这个值。 使用 getActivityName() 方法将总是返回空字符串。 Mac OS X 平台 在 quick-x 的 Mac 模拟器中,调用 CCWebView 的方法将不会有任何作用。 Windows 平台 目前可能无法编译 quick-x Windows 模拟器,我正在安装 Virtual Box 来解决这个问题。
本文已经在CocoaChina论坛Quick-Cocos2d-x讨论区中发布,欢迎大家来参与讨论! 来源网址:http://zengrong.net/post/2123.htm (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- json2
- Ruby on Rails迁移时的一些注意事项
- c# – 带oauth的webapi,撤销令牌?
- 如果IndexSearcher调用空RAMDirectory,则为IndexNotFoundEx
- AMF(Action Message Format)
- ruby-on-rails – Rails – CSV导出:提示文件下载
- 高性能I/O设计模式Reactor和Proactor
- ruby-on-rails – 使用Rails的CanCan gem来处理has_and_bel
- 如何在通过ajax加载页面后显示Twitter / Facebook / Google
- 如何进行autoconf检查以查看是否可以将-R传递给flex?