cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug

cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug

http://blog.csdn.net/allenice1/article/details/7747425

分类: javascript cocos2d-html52012-07-14
20:08 3005人阅读 评论(0) 收藏 举报

actionfunctionnullobject

今天学习了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‘);
时间: 2024-10-09 19:50:58

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

python之raw_input()(学习笔记六)

python之raw_input()(学习笔记六) 我们经常使用raw_input()读取用户的输入,如下例子所示: >>> name = raw_input('please input your name:'),截图如下: 下面简单说下,raw_input()与if搭配使用,脚本如下: #!/usr/bin/env python # -*- coding:utf-8 -*- birth = raw_input('birth:') if birth < 2000: print '0

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Html5学习笔记1 元素 标签 属性

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5学习笔记</title> </head> <body bgcolor="#90ee90"> 1.Html5的元素<br/><br/> 元素指的是从開始标签到结束标签的全部代码<

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

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)

Swift使用自动引用计数(ARC)来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 另外需要注意的: 引用计数仅仅作用于类实例上.结构和枚举是值类型,而非引用类型,所以不能被引用存储和传递. swift的ARC工作过程 每当创建一个类的实例,ARC分配一个内存块来存储这个实例的信息,包含了类型信息和实例的属性值信息. 另外当实例不再被使用时,ARC会释放实例所占用的内存,这些

Linux System Programming 学习笔记(六) 进程调度

1. 进程调度 the process scheduler is the component of a kernel that selects which process to run next. 进程调度器需要使 处理器使用率最大化,并且提供 使多个进程并发执行的虚拟 Deciding which processes run, when, and for how long is the process scheduler's fundamental responsibility. 时间片:th

Lua学习笔记(六):函数-续

Lua中的函数是带有词法定界(lexical scoping)的第一类值(first-class values).第一类值指:在Lua中函数和其他值(数值.字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值.词法定界指:嵌套的函数可以访问他外部函数中的变量.这一特性给Lua提供了强大的编程能力. Lua中关于函数稍微难以理解的是函数也可以没有名字,匿名的.当我们提到函数名(比如print),实际上是说一个指向函数的变量,像持有其他类型的变量一样:

laravel3学习笔记(六)

原作者博客:ieqi.net ==================================================================================================== ORM Laravel3中MVC体系中Model里最重要的组成部分无疑是ORM了,ORM — object-relational mapper — 将数据操作面向对象化,使得整个web框架的核心风格统一,降低整体复杂度,为开发者提供便利. Laravel3中的ORM叫

html5学习笔记(3)--主题结构元素-1

html5学习笔记(3)--主题结构元素-1 Article元素 以下为对应代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <article> <header> <h1>极客学院</h