【Cocos】cc.moveBy()方法

Cocos 2019年04月25日 14:29 Norsl 250 0

官方api文档说明:

moveBy

移动指定的距离。

metadescription
返回ActionInterval
定义于cocos2d/actions/CCActionInterval.js:1158
参数列表
示例
// examplevar actionTo = cc.moveBy(2, cc.v2(windowSize.width - 40, windowSize.height - 40));


在 Cocos Creator 中,动作 简单来说就是 节点的位移、缩放和旋转

例如在上面的代码中,moveBy() 方法的作用是在规定的时间内移动指定的一段距离,第一个参数就是我们之前定义主角属性中的跳跃时间,第二个参数是一个 Vec2(表示 2D 向量和坐标)类型的对象,为了更好的理解,我们可以看看官方给的函数说明:

/**
 * !#en
 * Moves a Node object x,y pixels by modifying its position property.                                  <br/>
 * x and y are relative to the position of the object.                                                 <br/>
 * Several MoveBy actions can be concurrently called, and the resulting                                <br/>
 * movement will be the sum of individual movements.
 * !#zh 移动指定的距离。
 * @method moveBy
 * @param {Number} duration duration in seconds
 * @param {Vec2|Number} deltaPos
 * @param {Number} [deltaY]
 * @return {ActionInterval}
 * @example
 * // example
 * var actionTo = cc.moveBy(2, cc.v2(windowSize.width - 40, windowSize.height - 40));
 */cc.moveBy = function (duration, deltaPos, deltaY) {    return new cc.MoveBy(duration, deltaPos, deltaY);
};

可以看到,方法 moveBy 一共可以传入三个参数,前两个参数我们已经知道,第三个参数是 Number 类型的 Y 坐标,我们可以发现第二个参数是可以传入两种类型的,第一种是 Number 类型,第二种才是 Vec2类型,如果我们在这里传入的是 Number 类型,那么默认这个参数就是 X 坐标,此时就要填第三个参数,为 Y 坐标。上面的例子中 cc.moveBy(this.jumpDuration, cc.v2(0, this.jumpHeight)) 第二个参数传入的是使用 cc.v2 方法构建的 Vec2 类型对象,这个类型表示的是一个坐标,即有 X 坐标也有 Y 坐标,因为不需要再传入第三个参数!同时注意官方的一段话 x and y are relative to the position of the object.,这句话的意思是传入的 XY 坐标都是相对于节点当前的坐标位置,而不是整个坐标系的绝对坐标。

了解了参数的含义之后,我们再来关注 moveBy() 方法的返回值,看官方说明可以知道,这个方法返回的是一个 ActionInterval 类型的对象,ActionInterval 在 Cocos 中是一个表示时间间隔动作的类,这种动作在一定时间内完成。到这里我们就可以理解代码 cc.moveBy(this.jumpDuration, cc.v2(0, this.jumpHeight)).easing(cc.easeCubicActionOut()) 前一部分 的意思了,它的意思就是构造一个 ActionInterval 类型的对象,这个对象表示在 jumpDuration 的时间内,移动到相对于当前节点的 (0,this.jumpHeight) 的坐标位置,简单来说,就是一个向上跳跃的动作。

那么 后半部分 easing(cc.easeCubicActionOut()) 的作用是什么呢?easing 是 ActionInterval 类下的一个方法,这个方法可以让时间间隔动作呈现为一种缓动运动,传入的参数是一个缓动对象,返回一个 ActionInterval 类型对象,这里传入的是使用 easeCubicActionInOut 方法构建的缓动对象,EaseCubicInOut 是按三次函数缓动进入并退出的动作,具体曲线可参考下图:


说点什么吗?

你的电子邮箱地址不会被公开。必填项已用 * 著名

*
*
验证码

Norsl の 个人名片

职业:web开发

现居:四川 成都

Git:https://gitee.com/norsl

邮箱:3136904131@qq.com

最新评论

  • 林三 : 我也很久没有清理友链了,现在更新和回复好多哇!
  • 林三 : 我也好久没有清理友链了,现在更新和回复已经很忙了的说。
  • Norsl : 已经更新好了,就是访问你之前的域访问不到了。
  • 淡然若雅 : 换了新域名,有时间添加下。
  • Norsl : 这存款都是每个月工资里面抠出来的。哈哈哈
  • 萧瑟 : 不错呦,比我当初才出来的时候好多了,竟然还有小笔存款。
  • Norsl : 对啊,后面还要进行改版
  • 摄影博客 : 你自己设计的平台啊。
  • Norsl : 其实也没啥技术含量
  • repostone : 非技术的路过。