首页 > 代码库 > cocos2d-js 开发常见问题
cocos2d-js 开发常见问题
1. 编译android版本可能出现的问题记录
如果编译的时候报错。出现/platforms/android-14/arch-arm/usr/lib/crtend_so.o: Unknown EABI object attribute 44或者R_ARM_THM_CALL against symbol xxx,然后编译不过的问题
解决方案:
在android.mk上加个LOCAL_ARM_MODE := arm
出现原因:
android的编译默认指令是:
编译命令始终是compile++ thumb 或者 compilethumb
为什么使用thumb:
thumb指令集是为了满足一些低端的设备而加上的,使用的是16位的指令集,能压缩代码密度,但是指令比普通的32位arm指令弱很多。
通常来说不会出现这个问题。如果自行添加第三方库的时候有可能会出现,建议大家记录一下,这个问题比较难发现和解决。
2. Web平台广告接入--addScene广告接入方法
addSense网站地址:http://www.google.cn/adsense/start/(需要FQ才能访问)
注册addSense成功以后进入后台
选择需要创建的广告类型之后,点击生成广告代码
生成成功后,后台如下图所示
将广告代码贴到index.html下。即可完成广告添加
添加成功后如下图所示
最后, 关于广告位置问题,可以根据html格式在index.html进行调整。
tips:如果需要接入百度移动联盟,腾讯广告等,也是同样的做法。
3. 如何在Code IDE中运行js-test, 如何运行cocos命令行创建的项目
1)在Cocos Code IDE中新建一个cocos js项目,就叫CocosJsGameSampleTest吧。
2)注意在新建的时候需要选中Create From Exising Resource
如下图所示:
然后点击确定生成项目。
3)在项目目录中找到project.json, 修改project.json中的enginedir值从“../../frameworks/cocos2d-html5”改为 “frameworks/cocos2d-html5”;
4)点击Cocos Code IDE中的地球图标运行,就可以看到成果了哦。
4. 如何监听浏览器窗口大小变化,横竖屏
当用户拖拽来改变浏览器大小,或者更有用的情况,当他们转动自己手机方向的时候。游戏中任意时刻都可以开启这种行为,只需要调用cc.EGLView的resizeWithBrowserSize函数:
cc.EGLView.getInstance().resizeWithBrowserSize(true);
为了更灵活得应对变化,我们为cc.EGLView提供了一个新的函数,你可以通过setResizeCallback函数注册一个回调函数来监听浏览器窗口大小变化事件:
代码如下:
cc.EGLView.getInstance().setResizeCallback(function() { // 做任何你所需要的游戏内容层面的适配操作 // 比如说,你可以针对用户的移动设备方向来决定所要应用的适配模式// 比如说 获取宽度和高度,如果宽度大于高度就是横屏, 如果宽度小于高度就是竖屏});
5. 手机浏览器黑屏问题
使用Cocos2d-JS最新版本导致浏览器黑屏的同学,可以试试在以下解决方案:加一个viewport上去就行了。
6. LabelBMFont黑边问题
在 LabelBMFont的图片字,纯白色的粗体, 在h5上没黑边,在jsb下,iPhone上还有黑边。解决方案:
7. 浏览器中输入文字解决方案
我们的游戏经常需要玩家输入文字信息,而edit控件的输入方式又不太好用,这里提供一个弹出框的解决方案(仅限在浏览器、微信中使用)
createInput: function () {var textField = new ccui.TextField(); textField.setTouchEnabled(true); textField.fontName = "Marker Felt"; textField.fontSize = 30; textField.x = widgetSize.width / 2.0; textField.y = widgetSize.height / 2.0; textField.addEventListenerTextField(this.textFieldEvent, this);},textFieldEvent: function (sender, type) { switch (type) { case ccui.TextField.EVENT_ATTACH_WITH_IME: var textField = sender; this._topDisplayLabel.setString("attach with IME"); if (!cc.sys.isNative) { var inputStr = window.prompt("请输入:"); cc.log("你输入的内容是:"+inputStr); } break;}
8. cocos命令编译Android平台,sdk版本错误解决方案
cocos compile -p android运行以后出现the android-platform should be equal larger than 10的解决方案:
可以使用以下命令,解决此问题:cocos compile -p android --ap XX
--ap X 指定编译版本。你电脑上的SDK有什么版本,就编译什么版本。
cocos2d-js 开发常见问题