水果特攻队(FruitAttack)从2x移植到3.0rc2的源码分享

本贴的主要目的是用来学习和交流的,欢迎各位大神多多指教,也欢迎刚开始接触html5和cocos2d-js的新手们一起交流。
本人原来一直在做app,包括IOS和cocos2d-x,最近刚开始接触html5和cocos2d-js。
这个源码是为了熟悉html5和cocos2d-js的语法而整理的,从cocos2d-js 2x移植到3.0rc2,补充了很多注释,估计会有注释不准确的地方,欢迎大家指正。

目前还有几个主要问题没解决,欢迎大家来交流!

页面刚载入时的黑块问题。

游戏进度条的位置自适应问题:使用this.mProgressBgSpr.getContentSize().width获取的宽度是0,没有获取到进度条背景图片的实际宽度。

需要取消掉SpriteBatchNode,因为v3.0中据说不推荐使用这种方式了

FruitAttack/res/HD/res下的baseResource.png和baseResource.plist需要重做,太小了,不适合HD的。

游戏地址:
http://imgh5.sinaapp.com/mgh5/FruitAttack/index.html

帮顶。给力的开源哦。楼主在2.x升级的过程中有没有遇到哪些坑呢。欢迎分享

遇到过几个问题:

一、cc.spriteFrameCache.getSpriteFrame获取不到图片的问题 :
主要是没有预加载图片资源,这个我发帖求助了,多谢happyfhc和vili2056,地址:http://www.cocoachina.com/bbs/read.php?tid=224988

二、自定义事件通知的方式变了:
2x里使用的是“cc.NotificationCenter.addObserver(this, this.onCheckPattern, MSG_CHECK_PATTERN);”和“gNotification.postNotification(MSG_CHECK_PATTERN,this);”的方式来实现两个类之间的事件通知,在3x里改为了使用事件管理器cc.eventManager来进行事件通知,具体代码可以在GamePatternMatrix.js和GamePattern.js两个文件中查找“MSG_CHECK_PATTERN”关键字来查看源代码。

三、精灵的触摸响应方式也改成了事件管理器来管理了,不再是重写onTouchBegan之类的方法了,改由cc.eventManager.addListener(…)的方式来实现,也包括键盘、鼠标等其他事件响应及管理,包括上面的自定义事件。

四、在3x里貌似取消掉了cc.director.replaceScene方式来切换场景,我目前是直接使用了cc.director.runScene来运行新场景,不过不知道会不会有什么问题,还请大神指教。

五、3x里不需要实现构造方法ctor了,实例化类以后,直接调用init方法来初始化对象,如:
var nextLayer = new GamePatternMatrix;
nextLayer.init();

六、播放音乐、音效方面,由原来的“cc.AudioEngine.getInstance().playMusic(…)”,改为“cc.audioEngine.playMusic(…)”,不需要getInstance()了,命名空间首字母也改成了小写。

七、2x里通过create创建对象的方式,直接简化了,不需要create来创建了,cc后面的命名空间首字母也改成了小写,如:“this.runAction(cc.Sequence.create(cc.DelayTime.create(gPatternsFallTime+0.1), cc.CallFunc.create(this.detectionMatrix.bind(this))));”,
可以使用“this.runAction(cc.sequence(cc.delayTime(gPatternsFallTime + 0.1), cc.callFunc(this.detectionMatrix, this)));”来实现。原有带create的方式也可用,但不知道以后会不会逐步弃用掉。

暂时总结出来这些点,理解得不对的地方还请大家多指教!!!

:867: 赞哦!!

学习学习:14:

这个帖子不错,值得大家学习

我的音效播放怎么总是报错。。。
Uncaught TypeError: Cannot read property ‘playbackState’ of null

谢谢楼主分享

我下载了楼主的工程,修改了一些代码,发布到web上后为什么和楼主的运行效果不同,请问楼主我该如何解决这个问题呢
和楼主的不同的地方,在web上没有显示出冰冻
不能显示出网格

游戏移植到web上的效果图