/** * @language zh_CN * 淡入播放指定名称的动画。 * @param animationName 动画数据的名称。 * @param playTimes 循环播放的次数。 [-1: 使用数据默认值, 0: 无限循环播放, [1~N]: 循环播放 N 次] * @param fadeInTime 淡入的时间。 [-1: 使用数据默认值, [0~N]: N 秒淡入完毕] (以秒为单位) * @param layer 混合的图层,图层高会优先获取混合权重。 * @param group 混合的组,用于给动画状态编组,方便混合淡出控制。 * @param fadeOutMode 淡出的模式。 * @param additiveBlending 以叠加的形式混合。 * @param displayControl 是否对显示对象属性可控。 * @param pauseFadeOut 暂停需要淡出的动画。 * @param pauseFadeIn 暂停需要淡入的动画,直到淡入结束才开始播放。 * @returns 返回控制这个动画数据的动画状态。 * @see dragonBones.AnimationFadeOutMode * @see dragonBones.AnimationState * @version DragonBones 4.5 */ public AnimationState FadeIn( string animationName, float fadeInTime = -1.0f, int playTimes = -1, int layer = 0, string group = null, AnimationFadeOutMode fadeOutMode = AnimationFadeOutMode.SameLayerAndGroup, bool additiveBlending = false, bool displayControl = true, bool pauseFadeOut = true, bool pauseFadeIn = true ) { if (!_animations.ContainsKey(animationName)) { _time = 0; DragonBones.Warn( "Non-existent animation. " + " DragonBones: " + _armature.armatureData.parent.name + " Armature: " + _armature.name + " Animation: " + animationName ); return(null); } var animationData = _animations[animationName]; if (float.IsNaN(_time)) { _time = 0.0f; } _isPlaying = true; if (fadeInTime < 0.0f || float.IsNaN(fadeInTime)) { if (_lastAnimationState != null) { fadeInTime = animationData.fadeInTime; } else { fadeInTime = 0.0f; } } if (playTimes < 0) { playTimes = (int)animationData.playTimes; } _fadeOut(fadeInTime, layer, group, fadeOutMode, pauseFadeOut); _lastAnimationState = BaseObject.BorrowObject <AnimationState>(); _lastAnimationState._layer = layer; _lastAnimationState._group = group; _lastAnimationState.additiveBlending = additiveBlending; _lastAnimationState.displayControl = displayControl; _lastAnimationState._fadeIn( _armature, animationData.animation != null ? animationData.animation : animationData, animationName, (uint)playTimes, animationData.position, animationData.duration, _time, 1 / animationData.scale, fadeInTime, pauseFadeIn ); _animationStates.Add(_lastAnimationState); _animationStateDirty = true; _time = 0.0f; _armature._cacheFrameIndex = -1; if (_animationStates.Count > 1) { _animationStates.Sort(_sortAnimationState); } foreach (var slot in _armature.GetSlots()) { if (slot.inheritAnimation) { var childArmature = slot.childArmature; if ( childArmature != null && childArmature.animation.HasAnimation(animationName) && childArmature.animation.GetState(animationName) == null ) { childArmature.animation.FadeIn(animationName); } } } if (fadeInTime <= 0.0f) { _armature.AdvanceTime(0.0f); // Blend animation state, update armature. (pass actions and events) } return(_lastAnimationState); }