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
plain
copy

  1. cc.Sequence.create = function (/*Multiple Arguments*/tempArray) {
  2. var paraArray = (typeof tempArray == "Array") ?

    tempArray : arguments;

  3. var prev = paraArray[0];
  4. for (var i = 1; i < paraArray.length; i++) {
  5. if (paraArray[i] != null) {
  6. prev = cc.Sequence._actionOneTwo(prev, paraArray[i]);
  7. }
  8. }
  9. return prev;
  10. };

类型推断没有“Array”的,所以传数组进去的话,还是会当成传一个action进去,而不是一个action数组。

解决的方法就是替换推断參数是否是数组那一句,可是我们不能直接改cocos2d的源码。

我的解决的方法是新建一个文件,重写这种方法,然后载入cocos2d的库后,再载入我重写那个方法的文件。

下面是重写的代码:

Sequence.js

[javascript] view
plain
copy

  1. cc.Sequence.create = function (/*Multiple Arguments*/tempArray) {
  2. var paraArray = (isArray(tempArray)) ? tempArray : arguments;
  3. var prev = paraArray[0];
  4. for (var i = 1; i < paraArray.length; i++) {
  5. if (paraArray[i] != null) {
  6. prev = cc.Sequence._actionOneTwo(prev, paraArray[i]);
  7. }
  8. }
  9. return prev;
  10. };
  11. function isArray (obj) {
  12. return Object.prototype.toString.call(obj) === '[object Array]';
  13. }

注意载入的顺序:

[javascript] view
plain
copy

  1. cc.loadjs('lib/Cocos2d-html5-canvasmenu-min.js');
  2. cc.loadjs('lib/Sequence.js');

cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug的更多相关文章

  1. HTML5学习笔记<六>: HTML5框架, 背景和实体

    HTML5框架 1. 框架标签(frame): 框架对于页面的设计有着很大的作用 2. 框架集标签(<frameset>): 框架集标签定义如何将窗口分割为框架 每个frameset定义一 ...

  2. HTML5学习笔记(二十):JavaScript中的标准对象

    这里提到的标准对象指ECMAScript中定义的对象,无论JavaScript运行那种环境(浏览器.Node.js)下都存在的对象. typeof 在JavaScript的世界里,一切都是对象. 但是 ...

  3. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  4. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  5. html5学习笔记一

    HTML5学习笔记 <video>标记:定义视频,Ogg.MPEG4.WebM三种格式 <video src=”movie.ogg”  controls=”controls”> ...

  6. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  7. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  9. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

随机推荐

  1. JavaScript的最大函数參数长度和最大栈深度检測

    一般代码也许不会涉及最大參数长度和最大栈深度,但某些特殊场合,检測这两个參数还是有必要的.比如:用递归计算斐波那契数列的第n个值,不了解最大栈深度,难免显得肤浅.又比如:将一串charCode转成St ...

  2. js继承——从创建对象开始

    从创建对象开始 创建对象的简单方法就是:使用Object构造函数或者对象字面量.但这两个方法有个缺点:创建相同对象,要编写大量重复代码. 为了避免这个问题——>工厂模式:用函数封装以特定接口创建 ...

  3. Silverlight:《Pro Silverlight5》读书笔记 之 XAML

    XAML Properties and Events in XAML Simple Properties and Type Converters To bridge the gap between s ...

  4. webBrowser捕获Alert内容(C#)

    1.引用using mshtml;  //Microsoft HTML Object Library2.[ComVisible(true)] //放到类的上边 public partial class ...

  5. Linux命令大全----系统管理相关命令

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka       摘要:本文主要讲了Linux命令大全----系统管理相关命令,并附有实例 一.安装 ...

  6. jenkins双向备份;高可用部署;

    如果把一个Jenkins的整个目录赋值到另一个Jenkins的目录,则需要务必保持两个Jenkins版本是相同的,不然容易出现Jenkins插件兼容性问题. 另外使用inotify+rsync备份的时 ...

  7. CRF,没完全看懂

    这篇文章,感觉讲的还比较浅显易懂: http://www.sohu.com/a/207085690_206784

  8. Orchard运用 - 如何删除部分内容显示

    最近在潜心研究Orchard CMS,个人觉得要深入了解一个系统最好的办法, 就是使用它做些什么尝试,最好有些真实的实践,比如不妨基于Orchard搭建个人博客, 看看有哪些场景需要定制,哪些功能可以 ...

  9. c:forEach实现换行

    Map<String,String> map = new TreeMap<String,String>(); map.put("key1", "v ...

  10. [Python爬虫] 之五:Selenium 处理滚动条

     selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的.这时候需要借助滚动条来拖 ...