【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API
新增action中的方法
曾经,当我们须要反复一个action的时候,我们须要:
sprite.runAction(cc.Repeat.create(action, 2));
上面代码中创建了一个新的Repeat对象又一次包装action,这样无论在语义上还是代码上都比較难理解。 为什么我们不能像jQuery一样的简单方便的使用原action呢?
于是我们在新版本号中为action添加了新的方法:
sprite.runAction(action.repeat(2));
要循环action仅仅须要在action后面添加.repeat(),而不须要和曾经一样又一次生成一个action,是不是更加方便了? ^.^
另外,我们还针对action的相关类,添加了更加简单的创建方法,通过类名第一个字母改为小写就能创建出一个新的对象:
var action = cc.moveBy(2,cc.p(10,10));
上面代码等同于:
var action = cc.MoveBy.create(2, cc.p(10, 10))
看到这里,大家一定非常操心一件事儿~兼容性。。。
事实上,大家不必太过于操心,旧的方法依然是被支持滴。
为什么要新增API
刚刚提到了怎么调用新的方法,可是为什么我们在现有一套比較成熟的方案下还是在新版本号中增加了新的方法呢?
事实上这一切都是为了更简单,更符合大家的使用习惯,以及让代码看起来更加清晰明了。
链式语法使得我们能够仅仅要生成一个对象,然后就能够通过调用对象的不同方法实现各种功能:
var action = cc.RotateTo.create(0.5, 90).repeat(5).speed(0.5);
或者:
var action = cc.RotateTo.create(0.5, 90);
action.repeat(5);
action.speed(0.5);
即使是全然没有接触过cocos2d-html5的用户,也能在第一时间看懂这段代码 - 创建一个action,然后针对这个action设置反复次数以及运行速度。
我们来对照旧的方法:
var action = cc.RotateTo.create(0.5, 90);
var action1 = cc.Repeat.create(action, 2);
var action2 = cc.Speed.create(action1, 0.5);
旧的方法生成了3个对象,并且造成了代码上的轻微污染。在阅读性和书写效率上都不如新的方法来的实在。
另外由于不再须要又一次生成冗余的对象了,所以在初始化速度上也有一点点的提升。
所以尽管新版本号依然支持老方法,可是我们还是建议大家依照新的方式来书敲代码。
新增API列表
除了上面提到的repeat以及speed方法外,我们还新增了以下这些方法。
| 旧的调用使用方法 | 相应的新方法 |
|---|---|
| cc.Repeat.create(action, num) | action.repeat(num) |
| cc.RepeatForever.create(action) | action.repeatForever() |
| cc.Speed.create(action, speed) | action.speed(speed) |
| cc.Speed.setSpeed(speed) | action.setSpeed(speed) |
| cc.Speed.getSpeed() | action.getSpeed() |
| cc.EaseIn.create(action, rate) | action.easing(cc.easeIn(rate)) |
| cc.EaseOut.create(action, rate) | action.easing(cc.easeOut(rate)) |
| cc.EaseInOut.create(action, rate) | action.easing(cc.easeInOut(rate)) |
| cc.EaseExponentialIn.create(action) | action.easing(cc.easeExponentialIn()) |
| cc.EaseExponentialOut.create(action) | action.easing(cc.easeExponentialOut()) |
| cc.EaseExponentialInOut.create(action) | action.easing(cc.easeExponentialInOut()) |
| cc.EaseSineIn.create(action) | action.easing(cc.easeSineIn()) |
| cc.EaseSineOut.create(action) | action.easing(cc.easeSineOut()) |
| cc.EaseSineInOut.create(action) | action.easing(cc.easeSineInOut()) |
| cc.EaseElasticIn.create(action) | action.easing(cc.easeElasticIn()) |
| cc.EaseElasticOut.create(action) | action.easing(cc.easeElasticOut()) |
| cc.EaseElasticInOut.create(action, rate) | action.easing(cc.easeElasticInOut(rate)) |
| cc.EaseBounceIn.create(action) | action.easing(cc.easeBounceIn()) |
| cc.EaseBounceOut.create(action) | action.easing(cc.easeBounceOut()) |
| cc.EaseBounceInOut.create(action) | action.easing(cc.easeBounceInOut()) |
| cc.EaseBackIn.create(action) | action.easing(cc.easeBackIn()) |
| cc.EaseBackOut.create(action) | action.easing(cc.easeBackOut()) |
| cc.EaseBackInOut.create(action) | action.easing(cc.easeBackInOut()) |
部分演示样例:
EaseIn:
var move = cc.MoveBy.create(2, cc.p(winSize.width - 80, 0)).easing(cc.easeIn(2.0));
sprite.runAction(move);
RepeatForever:
var move = cc.MoveBy.create(2, cc.p(winSize.width - 80, 0)).RepeatForever();
sprite.runAction(move);
注意事项
反复对一个action对象使用两次repeat/speed方法,运行结果为设置值相乘。
var action = cc.RotateTo.create(0.5, 90); //speed为6
action.speed(2).speed(3);
action.getSpeed() ==> 6; //repeat次数为6
action.repeat(2).repeat(3);
转载请注明:http://www.douapp.com/post/2444
【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API的更多相关文章
- bootbox.js官方文档中文版
bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...
- StackExchange.Redis 官方文档(五) Keys, Values and Channels
原文:StackExchange.Redis 官方文档(五) Keys, Values and Channels Keys, Values and Channels 在使用redis的过程中,要注意到 ...
- Hui之Hui.js 官方文档
基础 // 判断值是否是指定数据类型 var result = hui.isTargetType("百签软件", "string"); //=>true ...
- node.js官方文档解析 02—buffer 缓冲器
Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存.Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全局 ...
- Node.js官方文档:到底什么是阻塞(Blocking)与非阻塞(Non-Blocking)?
译者按: Node.js文档阅读系列之一. 原文: Overview of Blocking vs Non-Blocking 译者: Fundebug 为了保证可读性,本文采用意译而非直译. 这篇博客 ...
- node.js官方文档解析 01—assert 断言
assert-------断言 new assert.AssertionError(options) Error 的一个子类,表明断言的失败. options(选项)有下列对象 message < ...
- bootbox.js官方文档
简介 Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Bootstrap模态框生成的都是非阻塞事 ...
- node.js官方文档chm电子书的制作
制作软件:WebCHMSetup2.22.zip,http://www.onlinedown.net/soft/31553.htm 制作好的电子书:Node.js(v6.10.2).zip 参考链接: ...
- Vue.js官方文档学习笔记(一)起步篇
Vue.js起步 Vue.js介绍 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...
随机推荐
- JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中
JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中 一.JMS的理解JMS(Java Message Service)是jcp组织02-03年定义了jsr914规范(http://j ...
- VS无法访问IIS元数据库 您没有足够的特权访问计算机上的IIS网站
进入windows\regedit.exe下的HKEY_CRRENT_USER\Software\Microsoft\Windows\CurrentVersion\Exploer\User Shell ...
- Shiro的Web项目配置(转)
Shiro的Web项目配置 一 shiro的学习 二 shiro的java客户端配置 三 关于权限的一些问题 一 shiro的学习 官网和张开涛博客 二 shiro的java客户端配置 1.在web. ...
- ECMAScript5和ECMAScript6_浏览器支持情况
ECMAScript5浏览器支持情况: Opera 11.60 Internet Explorer 9* Firefox 4 Safari 5.1** Chrome 13 * IE9不支持严格模式 - ...
- Linux动态链接库的创建与使用
Linux动态链接库的创建与使用1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数 ...
- 22、在Ubuntu 14.0上使用韦东山IP2977测试总结(未成功)
1. 去www.kernel.org下载同版本的内核(与Ubuntu 14.0) 解压后把drivers/media/video/uvc目录取出(发现我的3.13版本的在drivers\media\u ...
- C++基础学习教程(七)----类编写及类的两个特性解析--->多态&继承
类引入 到眼下为止我们所写的自己定义类型都是keywordstruct,从如今起我们将採用class方式定义类,这样的方式对于学习过其它高级语言包含脚本(Such as Python)的人来说再熟悉只 ...
- Android 最火高速开发框架AndroidAnnotations简单介绍
在上一篇Android 最火的高速开发框架androidannotations配置具体解释中介绍了在eclipse中配置androidannotation的步骤,如需配置请參考. 1.目标 andro ...
- leetcode笔记:Remove Duplicates from Sorted Array II
一.题目描写叙述 二.解题技巧 这道题和Remove Duplicates from Sorted Array这道题是相似的.仅仅只是这里同意出现反复的数字而已,能够採用二分搜索的变种算法.仅仅只是增 ...
- (十一)RabbitMQ消息队列-如何实现高可用
原文:(十一)RabbitMQ消息队列-如何实现高可用 在前面讲到了RabbitMQ高可用集群的搭建,但是我们知道只是集群的高可用并不能保证应用在使用消息队列时完全没有问题,例如如果应用连接的Rabb ...