UNPKG

dragonbones-runtime

Version:

the tools to build dragonbones file for diffrent framework

404 lines (397 loc) 15.2 kB
/** * The MIT License (MIT) * * Copyright (c) 2012-2017 DragonBones team and other contributors * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace dragonBones { /** * - The animation config is used to describe all the information needed to play an animation state. * The API is still in the experimental phase and may encounter bugs or stability or compatibility issues when used. * @see dragonBones.AnimationState * @beta * @version DragonBones 5.0 * @language en_US */ /** * - 动画配置用来描述播放一个动画状态所需要的全部信息。 * 该 API 仍在实验阶段,使用时可能遭遇 bug 或稳定性或兼容性问题。 * @see dragonBones.AnimationState * @beta * @version DragonBones 5.0 * @language zh_CN */ export class AnimationConfig extends BaseObject { public static toString(): string { return "[class dragonBones.AnimationConfig]"; } /** * @private */ public pauseFadeOut: boolean; /** * - Fade out the pattern of other animation states when the animation state is fade in. * This property is typically used to specify the substitution of multiple animation states blend. * @default dragonBones.AnimationFadeOutMode.All * @version DragonBones 5.0 * @language en_US */ /** * - 淡入动画状态时淡出其他动画状态的模式。 * 该属性通常用来指定多个动画状态混合时的相互替换关系。 * @default dragonBones.AnimationFadeOutMode.All * @version DragonBones 5.0 * @language zh_CN */ public fadeOutMode: AnimationFadeOutMode; /** * @private */ public fadeOutTweenType: TweenType; /** * @private */ public fadeOutTime: number; /** * @private */ public pauseFadeIn: boolean; /** * @private */ public actionEnabled: boolean; /** * @private */ public additiveBlending: boolean; /** * - Whether the animation state has control over the display property of the slots. * Sometimes blend a animation state does not want it to control the display properties of the slots, * especially if other animation state are controlling the display properties of the slots. * @default true * @version DragonBones 5.0 * @language en_US */ /** * - 动画状态是否对插槽的显示对象属性有控制权。 * 有时混合一个动画状态并不希望其控制插槽的显示对象属性, * 尤其是其他动画状态正在控制这些插槽的显示对象属性时。 * @default true * @version DragonBones 5.0 * @language zh_CN */ public displayControl: boolean; /** * - Whether to reset the objects without animation to the armature pose when the animation state is start to play. * This property should usually be set to false when blend multiple animation states. * @default true * @version DragonBones 5.1 * @language en_US */ /** * - 开始播放动画状态时是否将没有动画的对象重置为骨架初始值。 * 通常在混合多个动画状态时应该将该属性设置为 false。 * @default true * @version DragonBones 5.1 * @language zh_CN */ public resetToPose: boolean; /** * @private */ public fadeInTweenType: TweenType; /** * - The play times. [0: Loop play, [1~N]: Play N times] * @version DragonBones 3.0 * @language en_US */ /** * - 播放次数。 [0: 无限循环播放, [1~N]: 循环播放 N 次] * @version DragonBones 3.0 * @language zh_CN */ public playTimes: number; /** * - The blend layer. * High layer animation state will get the blend weight first. * When the blend weight is assigned more than 1, the remaining animation states will no longer get the weight assigned. * @readonly * @version DragonBones 5.0 * @language en_US */ /** * - 混合图层。 * 图层高的动画状态会优先获取混合权重。 * 当混合权重分配超过 1 时,剩余的动画状态将不再获得权重分配。 * @readonly * @version DragonBones 5.0 * @language zh_CN */ public layer: number; /** * - The start time of play. (In seconds) * @default 0.0 * @version DragonBones 5.0 * @language en_US */ /** * - 播放的开始时间。 (以秒为单位) * @default 0.0 * @version DragonBones 5.0 * @language zh_CN */ public position: number; /** * - The duration of play. * [-1: Use the default value of the animation data, 0: Stop play, (0~N]: The duration] (In seconds) * @default -1.0 * @version DragonBones 5.0 * @language en_US */ /** * - 播放的持续时间。 * [-1: 使用动画数据默认值, 0: 动画停止, (0~N]: 持续时间] (以秒为单位) * @default -1.0 * @version DragonBones 5.0 * @language zh_CN */ public duration: number; /** * - The play speed. * The value is an overlay relationship with {@link dragonBones.Animation#timeScale}. * [(-N~0): Reverse play, 0: Stop play, (0~1): Slow play, 1: Normal play, (1~N): Fast play] * @default 1.0 * @version DragonBones 3.0 * @language en_US */ /** * - 播放速度。 * 该值与 {@link dragonBones.Animation#timeScale} 是叠加关系。 * [(-N~0): 倒转播放, 0: 停止播放, (0~1): 慢速播放, 1: 正常播放, (1~N): 快速播放] * @default 1.0 * @version DragonBones 3.0 * @language zh_CN */ public timeScale: number; /** * - The blend weight. * @default 1.0 * @version DragonBones 5.0 * @language en_US */ /** * - 混合权重。 * @default 1.0 * @version DragonBones 5.0 * @language zh_CN */ public weight: number; /** * - The fade in time. * [-1: Use the default value of the animation data, [0~N]: The fade in time] (In seconds) * @default -1.0 * @version DragonBones 5.0 * @language en_US */ /** * - 淡入时间。 * [-1: 使用动画数据默认值, [0~N]: 淡入时间] (以秒为单位) * @default -1.0 * @version DragonBones 5.0 * @language zh_CN */ public fadeInTime: number; /** * - The auto fade out time when the animation state play completed. * [-1: Do not fade out automatically, [0~N]: The fade out time] (In seconds) * @default -1.0 * @version DragonBones 5.0 * @language en_US */ /** * - 动画状态播放完成后的自动淡出时间。 * [-1: 不自动淡出, [0~N]: 淡出时间] (以秒为单位) * @default -1.0 * @version DragonBones 5.0 * @language zh_CN */ public autoFadeOutTime: number; /** * - The name of the animation state. (Can be different from the name of the animation data) * @version DragonBones 5.0 * @language en_US */ /** * - 动画状态名称。 (可以不同于动画数据) * @version DragonBones 5.0 * @language zh_CN */ public name: string; /** * - The animation data name. * @version DragonBones 5.0 * @language en_US */ /** * - 动画数据名称。 * @version DragonBones 5.0 * @language zh_CN */ public animation: string; /** * - The blend group name of the animation state. * This property is typically used to specify the substitution of multiple animation states blend. * @readonly * @version DragonBones 5.0 * @language en_US */ /** * - 混合组名称。 * 该属性通常用来指定多个动画状态混合时的相互替换关系。 * @readonly * @version DragonBones 5.0 * @language zh_CN */ public group: string; /** * @private */ public readonly boneMask: Array<string> = []; /** * @private */ protected _onClear(): void { this.pauseFadeOut = true; this.fadeOutMode = AnimationFadeOutMode.All; this.fadeOutTweenType = TweenType.Line; this.fadeOutTime = -1.0; this.actionEnabled = true; this.additiveBlending = false; this.displayControl = true; this.pauseFadeIn = true; this.resetToPose = true; this.fadeInTweenType = TweenType.Line; this.playTimes = -1; this.layer = 0; this.position = 0.0; this.duration = -1.0; this.timeScale = -100.0; this.weight = 1.0; this.fadeInTime = -1.0; this.autoFadeOutTime = -1.0; this.name = ""; this.animation = ""; this.group = ""; this.boneMask.length = 0; } /** * @private */ public clear(): void { this._onClear(); } /** * @private */ public copyFrom(value: AnimationConfig): void { this.pauseFadeOut = value.pauseFadeOut; this.fadeOutMode = value.fadeOutMode; this.autoFadeOutTime = value.autoFadeOutTime; this.fadeOutTweenType = value.fadeOutTweenType; this.actionEnabled = value.actionEnabled; this.additiveBlending = value.additiveBlending; this.displayControl = value.displayControl; this.pauseFadeIn = value.pauseFadeIn; this.resetToPose = value.resetToPose; this.playTimes = value.playTimes; this.layer = value.layer; this.position = value.position; this.duration = value.duration; this.timeScale = value.timeScale; this.fadeInTime = value.fadeInTime; this.fadeOutTime = value.fadeOutTime; this.fadeInTweenType = value.fadeInTweenType; this.weight = value.weight; this.name = value.name; this.animation = value.animation; this.group = value.group; this.boneMask.length = value.boneMask.length; for (let i = 0, l = this.boneMask.length; i < l; ++i) { this.boneMask[i] = value.boneMask[i]; } } /** * @private */ public containsBoneMask(name: string): boolean { return this.boneMask.length === 0 || this.boneMask.indexOf(name) >= 0; } /** * @private */ public addBoneMask(armature: Armature, name: string, recursive: boolean = true): void { const currentBone = armature.getBone(name); if (currentBone === null) { return; } if (this.boneMask.indexOf(name) < 0) { // Add mixing this.boneMask.push(name); } if (recursive) { // Add recursive mixing. for (const bone of armature.getBones()) { if (this.boneMask.indexOf(bone.name) < 0 && currentBone.contains(bone)) { this.boneMask.push(bone.name); } } } } /** * @private */ public removeBoneMask(armature: Armature, name: string, recursive: boolean = true): void { const index = this.boneMask.indexOf(name); if (index >= 0) { // Remove mixing. this.boneMask.splice(index, 1); } if (recursive) { const currentBone = armature.getBone(name); if (currentBone !== null) { if (this.boneMask.length > 0) { // Remove recursive mixing. for (const bone of armature.getBones()) { const index = this.boneMask.indexOf(bone.name); if (index >= 0 && currentBone.contains(bone)) { this.boneMask.splice(index, 1); } } } else { // Add unrecursive mixing. for (const bone of armature.getBones()) { if (bone === currentBone) { continue; } if (!currentBone.contains(bone)) { this.boneMask.push(bone.name); } } } } } } } }