coocs2d-js3.0 alpha2做的项目火爆上线,共同探讨下cocos-js 3.0中的那些坑

广告:
cocos2d-js3.0 alpha2打造的 2048三合一 上线, 三种游戏类型,引擎的稳定性和体验大家可以下载游戏玩玩感觉,给点建议:
地址: https://itunes.apple.com/cn/app/2048san-he-yi/id878565088?mt=8

起因:
前二个月一直在用2.2.1的h5版做游戏,要移到手机上时,当时想着,既然3.0js版已经出来了,直接移到3.0吧,所以花了一周时间把几个项目改成兼容3.0js的了.其中有不少小坑要自己改,但都不是大问题.

已经解决的问题:

  1. touchMove等事件中. touch的getLocation()返回自己的引用。
    这种情况要特别注意,如node中的 getLocation()也返回引用,以后变了,也跟着变,太恶心了。
  2. cc.color.RED或cc.color(r,g,b)时 没写alpha参数时为undefine,那么就为0处理啦. 非常低级的错误,函数内部没处理这种情况。
  3. JSB control button 绑定中有bug. 没把btn对象当key去存.

末解决的问题:
1.字体问题,用系统字时,都有黑色边框,所带示例也这样. 用图片字变向解决。
2.tp打成plist+png时,图片有黑边,只能在h5下用,h5不能用加载pvr,所以在真机上要用plist+pvr.ccz 可以变象解决。
3.update函数里更新rotation时sprite不见了(目前没想到可以变象的方法)。同一个zOrder的二个sprite运动时,显示上下位置改变,用不用zOrder变象解决。 这些估计和3.0渲染有关。

心得:
优点:

  1. cocos2d-js 3.0中api基本高度一致, h5版还是jsb版,基本同一份代码。

  2. 可以用webstorm开发,跳转,调度,非常完善,开发速度非常快.
    缺点:

  3. 在ios上打的包太大,一个空项目,基本执行文件在20M左右.
    2.还有很多坑没填,让人欲哭无泪, 建议大家还是先不要尝鲜.

最后,希望cocos2d-js 能更新快点,越做越好。
关于上面提到没提到的问题,大家有什么问题和解决方法,一起讨论,学习啊

学习了,谢谢你的分享
我也在用coocs2d-js3.0 alpha2做项目,问你2个问题:
1.coocs2d-js 如何实现通过手机的返回键来退出游戏?
2.coocs2d-js 中如何实现文本中使用指定的ttf字体文件,不是系统字体?

楼主所说用webstorm开发和调试是调试网页模式还是应用模式啊?

网页呀,用jsb基本直接到手机上.

1.看示例那返回就行。
2.ttf目前先染有bug.不好用,
骚年,放弃吧,js3.0目前不适合搞项目

末解决的bug向官方求解释,求答案

TTF字体渲染带描边 特别恶心 我这个项目也无法解决 cc.label.createTTF 有bug 内存 暴涨

现在js版本独立搞了一个2d-x的库,以保持功能上与H5版本同步,但是弊端是很多2d-x的新功能和bug修复无法及时更新到js版本中。另外说一下题外话,目前H5的市场规模还没起来,相信大家都是用来做app的,建议在2d-x的版本中加回JS绑定,这样想同时做H5版本和app版本的可以选择使用js版本,而只是想做app的可以使用2d-x的js绑定版本,不然以目前cocos2d-js版本的更新速度,会让lua版本越来越有优势

多谢楼主的指点,我也在用cocos2d-js 3.0在做项目。也是在iOS上打包有20多M,好大啊。

  1. 想咨询一下,打包的时候怎么用jscompile成jsc?
  2. 如果想使用admob,plugin怎么加载进来?我使用var adsAdmob = plugin.PluginManager.getInstance().loadPlugin(“AdsAdmob”); 这句话的时候,提示说ReferenceError: plugin is not defined

回复楼主,20M的话,是可以瘦身的,JSB和非JSB项目,在android上只会多出2M左右,在iOS只多出1M。

还有哪些坑,请报给我,谢谢

我们建议开发的过程中,堆逻辑和逻辑调试部分可以在web上完成,比较高效。
甚至屏幕适配也可以在web上完成。

只有真机调试部分需要在具体的设备上完成。

目前Cocos2d-JS的库为什么采用一个独立的仓库,是因为-x里面的init函数是protect类型,导致JSB这里绑定无法被调用到。

除这点之外,Cocos2d-JS都是同步到最新的仓库,且某些功能是比cocos2d-x还更早集成的,比如AssetManager,先在Cocos2d-JS 集成(JSB),然后才在cocos2d-x中集成。

所以,cocos2d-js团队会保持cocos2d-x JSB和cocos2d-x的稳定版本功能保持最新同步。(Sprite3D暂时还没有计划想绑定出来,需要的人可以自己动手,分分钟搞定)

请问大大,怎样瘦身呀,现在默认的ios执行文件就20m左右了,加静态库太多了?

iOS打包文件过大的问题主要是因为Xcode从5.1开始要求同时编译32位和64位版本,所以所有依赖库全部都是32 + 64两份,光SpiderMonkey就很大了,目前暂时还没办法越过这个限制

楼主,想问一下为什么用js3.0创建出来的项目,在移动浏览器都黑屏?就算是火狐,也得卡一阵子才能出来。

— Begin quote from ____

引用第12楼yuntaoshe于2014-08-20 14:31发表的 回 9楼(seanlin) 的帖子 :
请问大大,怎样瘦身呀,现在默认的ios执行文件就20m左右了,加静态库太多了? http://www.cocoachina.com/bbs/job.php?action=topost&tid=203043&pid=1034198

— End quote

目前估计得自己动手去裁剪,去掉没有引用到的库。官方已经开始在做模块定制功能,可以整个模块很容易的去掉。预计时间点在9月份才有。

— Begin quote from ____

引用第14楼237786026于2014-08-21 08:29发表的 回 楼主(yuntaoshe) 的帖子 :
楼主,想问一下为什么用js3.0创建出来的项目,在移动浏览器都黑屏?就算是火狐,也得卡一阵子才能出来。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=203043&pid=1034632

— End quote

是不是你加载的资源非常多,非常大。如果是的话,建议分段加载资源。

此外,是否是完全黑屏?还是黑一会能出内容?console 有提供什么错误信息么?