UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

162 lines (161 loc) 5.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EffectAnimation = void 0; const FrameAnimation_1 = require("./FrameAnimation"); const ClassUtils_1 = require("../utils/ClassUtils"); const Ease_1 = require("../utils/Ease"); class EffectAnimation extends FrameAnimation_1.FrameAnimation { constructor() { super(...arguments); this._initData = {}; } set target(v) { if (this._target) this._target.off(EffectAnimation.EFFECT_BEGIN, this, this._onOtherBegin); this._target = v; if (this._target) this._target.on(EffectAnimation.EFFECT_BEGIN, this, this._onOtherBegin); this._addEvent(); } get target() { return this._target; } _onOtherBegin(effect) { if (effect === this) return; this.stop(); } set playEvent(event) { this._playEvent = event; if (!event) return; this._addEvent(); } _addEvent() { if (!this._target || !this._playEvent) return; this._setControlNode(this._target); this._target.on(this._playEvent, this, this._onPlayAction); } _onPlayAction() { this.play(0, false); } play(start = 0, loop = true, name = "") { if (!this._target) return; this._target.event(EffectAnimation.EFFECT_BEGIN, [this]); this._recordInitData(); super.play(start, loop, name); } _recordInitData() { if (!this._aniKeys) return; var i, len; len = this._aniKeys.length; var key; for (i = 0; i < len; i++) { key = this._aniKeys[i]; this._initData[key] = this._target[key]; } } set effectClass(classStr) { this._effectClass = ClassUtils_1.ClassUtils.getClass(classStr); if (this._effectClass) { var uiData = this._effectClass["uiView"]; if (uiData) { var aniData = uiData["animations"]; if (aniData && aniData[0]) { var data = aniData[0]; this._setUp({}, data); if (data.nodes && data.nodes[0]) { this._aniKeys = data.nodes[0].keys; } } } } } set effectData(uiData) { if (uiData) { var aniData = uiData["animations"]; if (aniData && aniData[0]) { var data = aniData[0]; this._setUp({}, data); if (data.nodes && data.nodes[0]) { this._aniKeys = data.nodes[0].keys; } } } } _displayToIndex(value) { if (!this._animationData) return; if (value < 0) value = 0; if (value > this._count) value = this._count; var nodes = this._animationData.nodes, i, len = nodes.length; len = len > 1 ? 1 : len; for (i = 0; i < len; i++) { this._displayNodeToFrame(nodes[i], value); } } _displayNodeToFrame(node, frame, targetDic = null) { if (!this._target) return; var target = this._target; var frames = node.frames, key, propFrames, value; var keys = node.keys, i, len = keys.length; var secondFrames = node.secondFrames; var tSecondFrame; var easeFun; var tKeyFrames; var startFrame; var endFrame; for (i = 0; i < len; i++) { key = keys[i]; propFrames = frames[key]; tSecondFrame = secondFrames[key]; if (tSecondFrame == -1) { value = this._initData[key]; } else { if (frame < tSecondFrame) { tKeyFrames = node.keyframes[key]; startFrame = tKeyFrames[0]; if (startFrame.tween) { easeFun = Ease_1.Ease[startFrame.tweenMethod]; if (easeFun == null) easeFun = Ease_1.Ease.linearNone; endFrame = tKeyFrames[1]; value = easeFun(frame, this._initData[key], endFrame.value - this._initData[key], endFrame.index); } else { value = this._initData[key]; } } else { if (propFrames.length > frame) value = propFrames[frame]; else value = propFrames[propFrames.length - 1]; } } target[key] = value; } } _calculateKeyFrames(node) { super._calculateKeyFrames(node); var keyFrames = node.keyframes, key, tKeyFrames, target = node.target; var secondFrames = {}; node.secondFrames = secondFrames; for (key in keyFrames) { tKeyFrames = keyFrames[key]; if (tKeyFrames.length <= 1) secondFrames[key] = -1; else secondFrames[key] = tKeyFrames[1].index; } } } exports.EffectAnimation = EffectAnimation; EffectAnimation.EFFECT_BEGIN = "effectbegin";