Files
fc/dev/project/library/imports/58/581d4838-52a3-4d27-a759-8b7815a97acf.js
2026-05-24 10:21:26 +08:00

393 lines
9.3 KiB
JavaScript

"use strict";
cc._RF.push(module, '581d4g4UqNNJ6dZi3gVqXrP', 'nx.tween');
// Scripts/nx/kernel/nx.tween.js
"use strict";
/*******************************************************************************
*
* Nx 动作Tween
*
*
*
* 2021.12.10
******************************************************************************/
var NxObject = require("nx.object");
var nxTween = cc.Class({
"extends": NxObject,
name: "nxTween",
// 初始化
initialize: function initialize(_args) {
// USPER
if (!this._super(_args)) {
return false;
}
// 全局服务开启
nx.tween = this;
return true;
},
// 销毁
uninitialize: function uninitialize() {
// 全局服务关闭
nx.tween = null;
// USPER
return this._super();
},
// 淡进
fadeIn: function fadeIn(_refnode, _names, _secs, _cb, _to, _from) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
nx.dt.fnInvoke(_cb);
return;
}
// 参数补全
var cb = _cb || nx.dt.fnEmpty;
var opTo = nx.dt.numFix(_to, 255);
var opFrom = nx.dt.numFix(_from, 0);
// 销毁
if (node.__tween_fade) {
node.__tween_fade.stop();
delete node.__tween_fade;
node.__tween_fade = null;
}
// 执行
node.active = true;
node.opacity = opFrom;
node.__tween_fade = cc.tween(node).to(_secs, {
opacity: opTo
}).call(cb).start();
},
// 淡出
fadeOut: function fadeOut(_refnode, _names, _secs, _cb, _to, _from) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
nx.dt.fnInvoke(_cb);
return;
}
// 参数补全
var cb = _cb || nx.dt.fnEmpty;
var opTo = nx.dt.numFix(_to, 0);
var opFrom = nx.dt.numFix(_from, node.opacity);
// 销毁
if (node.__tween_fade) {
node.__tween_fade.stop();
delete node.__tween_fade;
node.__tween_fade = null;
}
// 执行
node.active = true;
node.opacity = opFrom;
node.__tween_fade = cc.tween(node).to(_secs, {
opacity: opTo
}).call(cb).start();
},
// 贝塞尔计算
bezier: function bezier(_start, _end, _height, _t) {
var t1 = (1 - _t) * (1 - _t);
var t2 = 2 * _t * (1 - _t);
var t3 = _t * _t;
var p1 = cc.v2(_start.x + (_end.x - _start.x) / 2, _start.x + _height);
return _start.mul(t1).add(p1.mul(t2)).add(_end.mul(t3));
},
/**
* 贝塞尔位移淡出
* @param {*} _secs 移动耗时
* @param {*} _delay 移动延迟
* @param {*} _to 目标点
* @param {*} _from 起始点
* @param {*} _scale 目标缩放
* @param {*} _opacity 目标透明度
* @param {*} _h 贝塞尔幅度
* @returns
*/
fadeOutBezier: function fadeOutBezier(_refnode, _names, _secs, _delay, _cb, _to, _from, _scale, _opacity, _h) {
if (_scale === void 0) {
_scale = 1;
}
if (_opacity === void 0) {
_opacity = 255;
}
if (_h === void 0) {
_h = 200;
}
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
nx.dt.fnInvoke(_cb);
return;
}
// 初始
var rop = node.opacity;
var rsc = node.scale;
node.opacity = 0;
node.position = _from;
// 销毁
if (node.__tween_fadeOutBezier) {
node.__tween_fadeOutBezier.stop();
delete node.__tween_fadeOutBezier;
node.__tween_fadeOutBezier = null;
}
// 行动
var self = this;
cc.Tween.stopAllByTarget(node);
node.__tween_fadeOutBezier = cc.tween(node).delay(_delay).to(_secs * 0.1, {
scale: rsc * 1.1,
opacity: rop
}).to(_secs * 0.1, {
scale: rsc
}).delay(_secs * 0.3).to(_secs * 0.5, {
scale: rsc * _scale,
opacity: _opacity,
position: {
value: _to,
progress: function progress(_s, _e, _c, _t) {
return self.bezier(_s, _e, _h, _t);
}
}
}).call(function () {
nx.dt.fnInvoke(_cb, node);
}).start();
},
/**
* 无限旋转
* @param {*} _refnode
* @param {*} _names
* @param {*} _speed
*/
rotateForever: function rotateForever(_refnode, _names, _speed) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_rotateForever) {
node.__tween_rotateForever.stop();
delete node.__tween_rotateForever;
node.__tween_rotateForever = null;
}
node.__tween_rotateForever = cc.tween(node).repeatForever(cc.tween().by(_speed, {
angle: 360
})).start();
},
/**
* 无限呼吸
* @param {*} _refnode
* @param {*} _names
* @param {*} _speed
* @param {*} _scale 呼吸幅度
*/
breatheForever: function breatheForever(_refnode, _names, _speed, _scale) {
if (_scale === void 0) {
_scale = 0.1;
}
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_breatheForever) {
node.__tween_breatheForever.stop();
delete node.__tween_breatheForever;
node.__tween_breatheForever = null;
node.scale = node.breathScale || 1;
}
node.breathScale = node.scale;
var smaller = node.scale - _scale;
var bigger = node.scale + _scale;
node.__tween_breatheForever = cc.tween(node).repeatForever(cc.tween().to(_speed / 4, {
scale: bigger
}).to(_speed / 2, {
scale: smaller
}).delay(_speed / 4)).start();
},
/**
* 移动
* @param {*} _refnode
* @param {*} _names
* @param {*} _secs
* @param {*} _pos
*/
moveTo: function moveTo(_refnode, _names, _secs, _pos, _cb) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_moveTo) {
node.__tween_moveTo.stop();
delete node.__tween_moveTo;
node.__tween_moveTo = null;
}
node.__tween_moveTo = cc.tween(node).to(_secs, {
position: _pos
}).call(function () {
nx.dt.fnInvoke(_cb, node);
}).start();
},
/**
* 缓移动
* @param {*} _refnode
* @param {*} _names
* @param {*} _secs
* @param {*} _pos
*/
moveToEasing: function moveToEasing(_refnode, _names, _secs, _pos, _key, _cb) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_moveTo) {
node.__tween_moveTo.stop();
delete node.__tween_moveTo;
node.__tween_moveTo = null;
}
node.__tween_moveTo = cc.tween(node).to(_secs, {
position: {
value: _pos,
easing: _key
}
}).call(function () {
nx.dt.fnInvoke(_cb, node);
}).start();
},
/**
* 缩放
* @param {*} _refnode
* @param {*} _names
* @param {*} _secs
* @param {*} _pos
*/
scaleTo: function scaleTo(_refnode, _names, _secs, _x, _y, _cb) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_scaleTo) {
node.__tween_scaleTo.stop();
delete node.__tween_scaleTo;
node.__tween_scaleTo = null;
}
node.__tween_scaleTo = cc.tween(node).to(_secs, {
scaleX: _x,
scaleY: _y
}).call(function () {
nx.dt.fnInvoke(_cb, node);
}).start();
},
// 淡进
delayFadeIn: function delayFadeIn(_refnode, _names, _delay, _secs, _cb, _to, _from) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
nx.dt.fnInvoke(_cb);
return;
}
// 参数补全
var cb = _cb || nx.dt.fnEmpty;
var opTo = nx.dt.numFix(_to, 255);
var opFrom = nx.dt.numFix(_from, 0);
// 销毁
if (node.__tween_fade) {
node.__tween_fade.stop();
delete node.__tween_fade;
node.__tween_fade = null;
}
// 执行
node.active = true;
node.opacity = opFrom;
node.__tween_fade = cc.tween(node).delay(_delay).to(_secs, {
opacity: opTo
}).call(cb).start();
},
/**
* 抖动
* @param {*} _refnode
* @param {*} _names
* @param {*} _secs
* @param {*} _offset
*/
shake: function shake(_refnode, _names, _secs, _offset, _cb) {
// 找不到节点
var node = nx.gui.find(_refnode, _names);
if (!node) {
return;
}
// 销毁
if (node.__tween_shake) {
node.__tween_shake.stop();
delete node.__tween_shake;
node.__tween_shake = null;
}
var raw = node.position;
var ofx = _offset ? _offset.x : 10;
var ofy = _offset ? _offset.y : 10;
var secs = _secs || 1;
var times = Math.ceil(secs / 0.2);
var rand = function rand(_x) {
var ofs = _x ? ofx : ofy;
var ret = nx.dt.randomRange(-ofs, ofs);
if (Math.abs(ret) < ofs / 2) {
ret *= 2;
}
return _x ? raw.x + ret * 2 : raw.y + ret * 2;
};
node.__tween_shake = cc.tween(node).repeat(times, cc.tween().to(0.03, {
x: rand(true),
y: rand(false)
}).to(0.03, {
x: rand(true),
y: rand(false)
}).to(0.03, {
x: rand(true),
y: rand(false)
}).to(0.03, {
x: rand(true),
y: rand(false)
}).to(0.03, {
x: rand(true),
y: rand(false)
}).to(0.03, {
x: rand(true),
y: rand(false)
})).to(0.03, {
position: raw
}).call(function () {
nx.dt.fnInvoke(_cb, node);
}).start();
}
});
// 模块导出
module.exports = nxTween;
cc._RF.pop();