当前位置: 首页 > article >正文

CocosCreator 源码cc.moveBy详解

欢迎关注公众号:“Cocos Creator 源码讲解”,一起学习。

/** <p>* 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.* </p>* @class MoveBy* @extends ActionInterval* @param {Number} duration duration in seconds* @param {Vec2|Number} deltaPos* @param {Number} [deltaY]* @example* var actionTo = cc.moveBy(2, cc.v2(windowSize.width - 40, windowSize.height - 40));*/
/** <p>* 通过修改 Node 对象的位置属性来移动 Node 对象 x,y 像素。 <br/>* x 和 y 相对于对象的位置。 <br/>* 可以同时调用多个 MoveBy 操作,结果<br/>* 运动将是个体运动的总和。* </p>* @类MoveBy* @extends ActionInterval* @param {Number} 持续时间 持续时间(以秒为单位)* @param {Vec2|Number} deltaPos* @param {数字} [deltaY]* @例子* var actionTo = cc.moveBy(2, cc.v2(windowSize.width -40, windowSize.height -40));*/
cc.MoveBy = cc.Class({name: 'cc.MoveBy',extends: cc.ActionInterval,ctor: function (duration, deltaPos, deltaY) {this._positionDelta = cc.v2(0, 0);this._startPosition = cc.v2(0, 0);this._previousPosition = cc.v2(0, 0);deltaPos !== undefined && cc.MoveBy.prototype.initWithDuration.call(this, duration, deltaPos, deltaY);},/** Initializes the action.* @param {Number} duration duration in seconds* @param {Vec2} position* @param {Number} [y]* @return {Boolean}*//* /** 初始化操作。* @param {Number} 持续时间 持续时间(以秒为单位)* @param {Vec2} 位置* @param {数字} [y]* @return {布尔值}*/ */initWithDuration: function (duration, position, y) {if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) {/* 当position参数包含x属性,证明是一个position,重置两个参数,第二个参数设置为位置的x,第三个参数设置为位置的y */if (position.x !== undefined) {y = position.y;position = position.x;}this._positionDelta.x = position;this._positionDelta.y = y;return true;}return false;},/* 复制moveBy */clone: function () {var action = new cc.MoveBy();this._cloneDecoration(action);action.initWithDuration(this._duration, this._positionDelta);return action;},/* 初始化target参数传入 */startWithTarget: function (target) {cc.ActionInterval.prototype.startWithTarget.call(this, target);/* 设置开始的位置,x ,y */var locPosX = target.x;var locPosY = target.y;this._previousPosition.x = locPosX;this._previousPosition.y = locPosY;this._startPosition.x = locPosX;this._startPosition.y = locPosY;},/* 时时更新 */update: function (dt) {dt = this._computeEaseTime(dt);if (this.target) {/* 总计划移动位置的x值,乘以dt,y同理 */var x = this._positionDelta.x * dt;var y = this._positionDelta.y * dt;/* 获取target的位置 */var locStartPosition = this._startPosition;if (cc.macro.ENABLE_STACKABLE_ACTIONS) {var targetX = this.target.x;var targetY = this.target.y;var locPreviousPosition = this._previousPosition;locStartPosition.x = locStartPosition.x + targetX - locPreviousPosition.x;locStartPosition.y = locStartPosition.y + targetY - locPreviousPosition.y;x = x + locStartPosition.x;y = y + locStartPosition.y;locPreviousPosition.x = x;locPreviousPosition.y = y;this.target.setPosition(x, y);} else {this.target.setPosition(locStartPosition.x + x, locStartPosition.y + y);}}},/* 反向move */reverse: function () {var action = new cc.MoveBy(this._duration, cc.v2(-this._positionDelta.x, -this._positionDelta.y));this._cloneDecoration(action);this._reverseEaseList(action);return action;}
});/*** !#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));*/
/* 创建一个 moveBy对象  */
cc.moveBy = function (duration, deltaPos, deltaY) {return new cc.MoveBy(duration, deltaPos, deltaY);
};

http://www.lryc.cn/news/2418687.html

相关文章:

  • xiao
  • 小黄的日记,爱情本该如此
  • 分享97个社区论坛PHP源码,总有一款适合你
  • java仿qq空间音乐播放_使用JS改造的简单网页音乐播放器,仿QQ空间样式
  • CSS - 实现横向滚动(横向滚动布局)
  • 分享12款我常用的开源免费工具
  • 海外CDN加速方式
  • libtorrent源码分析(三)BT下载相关知识总结
  • C# TreeView的两种绑定方法
  • 刀剑封魔录多功能修改器 v1.2使用教程
  • 解析CNKI帐号用户名、密码破解秘笈
  • android4.0怎么用微信,新开放接口 Android版微信4.0全新体验
  • cocos2d-x学习笔记-触屏事件详解
  • Red Hat Enterprise Linux ISO 全镜像各个版本下载,安装教程
  • 国内外优秀程序员的博客全在这了,请查收
  • 超详细很实用入门必看:Java,C与Python三种大热编程语言比较分析与建议
  • 分享4个优秀的博客导航站
  • 理论物理专题讲义(量子力学与统计物理部分)
  • 循环赛日程表(递归实现)
  • 单表最大2000W行数据
  • 全网最全!解决VirtualBox或VMware启动虚拟机时报错问题“不能为虚拟电脑打开一个新任务”和“Error In suplibOslnit”解决方案超全超详细
  • 分享115个ASP留言日记源码,总有一款适合您
  • 《神探狄仁杰》主题曲《长歌一曲》
  • Java的三种移位运算
  • 笔记-信息系统安全管理-信息系统的安全属性
  • Portal实现原理 --转载
  • 输出“A、B...Z、AA、AB...AZ、BA、BB...BZ.......”的结构
  • squirrel sql client linux,SQuirreL SQL Client
  • 手机qq2012(android)1.0,手机qq2012安卓1.0 几个版本改进后的正式版本
  • fbreader android源码分析,开源阅读器FBReader Android版本的编译