cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug
http://blog.csdn.net/allenice1/article/details/7747425
分类: javascript cocos2d-html52012-07-14
20:08 3005人阅读 评论(0) 收藏 举报
今天学习了action,可是练习cc.Sequence.create的时候。发现了问题。
cc.Sequence.create能够传一个action的数组进去,可是我试了非常多次,还是没成功。无奈之下,我去看了源码。
一看。原来是推断參数是否是数组的语句错了
[javascript] view
plaincopy
- cc.Sequence.create = function (/*Multiple Arguments*/tempArray) {
- var paraArray = (typeof tempArray == "Array") ?
tempArray : arguments; - var prev = paraArray[0];
- for (var i = 1; i < paraArray.length; i++) {
- if (paraArray[i] != null) {
- prev = cc.Sequence._actionOneTwo(prev, paraArray[i]);
- }
- }
- return prev;
- };
类型推断没有“Array”的,所以传数组进去的话,还是会当成传一个action进去,而不是一个action数组。
解决的方法就是替换推断參数是否是数组那一句,可是我们不能直接改cocos2d的源码。
我的解决的方法是新建一个文件,重写这种方法,然后载入cocos2d的库后,再载入我重写那个方法的文件。
下面是重写的代码:
Sequence.js
[javascript] view
plaincopy
- cc.Sequence.create = function (/*Multiple Arguments*/tempArray) {
- var paraArray = (isArray(tempArray)) ? tempArray : arguments;
- var prev = paraArray[0];
- for (var i = 1; i < paraArray.length; i++) {
- if (paraArray[i] != null) {
- prev = cc.Sequence._actionOneTwo(prev, paraArray[i]);
- }
- }
- return prev;
- };
- function isArray (obj) {
- return Object.prototype.toString.call(obj) === ‘[object Array]‘;
- }
注意载入的顺序:
[javascript] view
plaincopy
- cc.loadjs(‘lib/Cocos2d-html5-canvasmenu-min.js‘);
- cc.loadjs(‘lib/Sequence.js‘);
时间: 2024-10-09 19:50:58