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有什么版本,就编译什么版本。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。