当前位置: 首页>>代码示例>>C#>>正文


C# Storyboard.BeginAsync方法代码示例

本文整理汇总了C#中Windows.UI.Xaml.Media.Animation.Storyboard.BeginAsync方法的典型用法代码示例。如果您正苦于以下问题:C# Storyboard.BeginAsync方法的具体用法?C# Storyboard.BeginAsync怎么用?C# Storyboard.BeginAsync使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Windows.UI.Xaml.Media.Animation.Storyboard的用法示例。


在下文中一共展示了Storyboard.BeginAsync方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: FadeOut

        /// <summary>
        /// Fades the element out using the FadeOutThemeAnimation.
        /// </summary>
        /// <remarks>
        /// Opacity property of the element is not affected.<br/>
        /// The duration of the visible animation itself is not affected by the duration parameter. It merely indicates how long the Storyboard will run.<br/>
        /// If FadeOutThemeAnimation was already run before and FadeInThemeAnimation was not run after that - nothing will happen.<br/>
        /// </remarks>
        /// <param name="dob"></param>
        /// <param name="duration"></param>
        /// <returns></returns>
        public static async Task FadeOut(this DependencyObject dob, TimeSpan? duration = null)
        {
            var fadeOutStoryboard = new Storyboard();
            var fadeOutAnimation = new FadeOutThemeAnimation();

            if (duration != null)
            {
                fadeOutAnimation.Duration = duration.Value;
            }

            Storyboard.SetTarget(fadeOutAnimation, dob);
            fadeOutStoryboard.Children.Add(fadeOutAnimation);
            await fadeOutStoryboard.BeginAsync();
        }
开发者ID:chao-zhou,项目名称:PomodoroTimer,代码行数:25,代码来源:DependencyObjectAnimationExtensions.cs

示例2: FadeIn

        /// <summary>
        /// Fades the element in using the FadeInThemeAnimation.
        /// </summary>
        /// <remarks>
        /// Opacity property of the element is not affected.<br/>
        /// The duration of the visible animation itself is not affected by the duration parameter. It merely indicates how long the Storyboard will run.<br/>
        /// If FadeOutThemeAnimation was not used on the element before - nothing will happen.<br/>
        /// </remarks>
        /// <param name="dob"></param>
        /// <param name="duration"></param>
        /// <returns></returns>
        public static async Task FadeIn(this DependencyObject dob, TimeSpan? duration = null)
        {
            ((FrameworkElement)dob).Visibility = Visibility.Visible;
            var fadeInStoryboard = new Storyboard();
            var fadeInAnimation = new FadeInThemeAnimation();

            if (duration != null)
            {
                fadeInAnimation.Duration = duration.Value;
            }
            
            Storyboard.SetTarget(fadeInAnimation, dob);
            fadeInStoryboard.Children.Add(fadeInAnimation);
            await fadeInStoryboard.BeginAsync();
        }
开发者ID:chao-zhou,项目名称:PomodoroTimer,代码行数:26,代码来源:DependencyObjectAnimationExtensions.cs

示例3: AnimateOpacityToAsync

        /// <summary>
        /// Animates the opacity of an element
        /// </summary>
        /// <param name="element">The element to animate</param>
        /// <param name="finalOpacity">Final Opacity</param>
        /// <param name="durationInSeconds">Duration in seconds</param>
        /// <param name="OnComplete">[Optional] Action to perform on complete</param>
        /// <returns>Storyboard created</returns>
        public static async Task<Storyboard> AnimateOpacityToAsync(this FrameworkElement element, double finalOpacity,
            double durationInSeconds, Action OnComplete = null)
        {
            ValidateForNull(element);
            ValidateCompositeTransform(element);
            if (element.RenderTransform == null) element.RenderTransform = new CompositeTransform();

            Storyboard sb = new Storyboard();
            DoubleAnimation opacityAnimation = CreateDoubleAnimation(element,
                durationInSeconds, finalOpacity,
                "(FrameworkElement.Opacity)");

            sb.Children.Add(opacityAnimation);
            await sb.BeginAsync();
            return sb;
        }
开发者ID:Ivalaostia,项目名称:UniversalHelpers,代码行数:24,代码来源:StoryboardHelpers.cs

示例4: FadeInCustom

        /// <summary>
        /// Fades the element in using a custom DoubleAnimation of the Opacity property.
        /// </summary>
        /// <param name="dob"></param>
        /// <param name="duration"></param>
        /// <param name="easingFunction"> </param>
        /// <returns></returns>
        public static async Task FadeInCustom(this DependencyObject dob, TimeSpan? duration = null, EasingFunctionBase easingFunction = null)
        {
            var fadeInStoryboard = new Storyboard();
            var fadeInAnimation = new DoubleAnimation();

            if (duration == null)
                duration = TimeSpan.FromSeconds(0.4);

            fadeInAnimation.Duration = duration.Value;
            fadeInAnimation.To = 1.0;
            fadeInAnimation.EasingFunction = easingFunction;

            Storyboard.SetTarget(fadeInAnimation, dob);
            Storyboard.SetTargetProperty(fadeInAnimation, "Opacity");
            fadeInStoryboard.Children.Add(fadeInAnimation);
            await fadeInStoryboard.BeginAsync();
        }
开发者ID:chao-zhou,项目名称:PomodoroTimer,代码行数:24,代码来源:DependencyObjectAnimationExtensions.cs

示例5: Animate

 private async Task Animate()
 {
     var sb = new Storyboard();
     var daX = new DoubleAnimation();
     var daY = new DoubleAnimation();
     daX.Duration = TimeSpan.FromSeconds(0.8);
     daY.Duration = TimeSpan.FromSeconds(0.8);
     Storyboard.SetTarget(daX, AnimatedTransform);
     Storyboard.SetTarget(daY, AnimatedTransform);
     Storyboard.SetTargetProperty(daX, "X");
     Storyboard.SetTargetProperty(daY, "Y");
     daX.To = rand.Next(0, (int)AnimationPanel.ActualWidth - 100);
     daY.To = rand.Next(0, (int)AnimationPanel.ActualHeight - 100);
     sb.Children.Add(daX);
     sb.Children.Add(daY);
     await sb.BeginAsync();
 }
开发者ID:siatwangmin,项目名称:WinRTXamlToolkit,代码行数:17,代码来源:EventThrottlerTestView.xaml.cs

示例6: AnimateToStraightenAsync

        private async Task AnimateToStraightenAsync()
        {
            if (_layoutGridTransform == null)
            {
                return;
            }

            var sb = new Storyboard();
            var dar = new DoubleAnimation();
            dar.Duration = TimeSpan.FromSeconds(.2);
            Storyboard.SetTarget(dar, _layoutGridTransform);
            Storyboard.SetTargetProperty(dar, "Rotation");
            dar.To = 0;
            sb.Children.Add(dar);

            if (_titleTransform != null &&
                _titleGrid != null &&
                _titleTransform.Rotation == -180)
            {
                var dato = new DoubleAnimationUsingKeyFrames();
                Storyboard.SetTarget(dato, _titleGrid);
                Storyboard.SetTargetProperty(dato, "Opacity");
                dato.KeyFrames.Add(new DiscreteDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(0), Value = 1 });
                dato.KeyFrames.Add(new LinearDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(.1), Value = 0 });
                dato.KeyFrames.Add(new LinearDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(.2), Value = 1 });
                sb.Children.Add(dato);

                var datr = new DoubleAnimationUsingKeyFrames();
                Storyboard.SetTarget(datr, _titleTransform);
                Storyboard.SetTargetProperty(datr, "Rotation");
                datr.KeyFrames.Add(new DiscreteDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(.1), Value = 0 });
                sb.Children.Add(datr);

                var datt = new DoubleAnimationUsingKeyFrames();
                Storyboard.SetTarget(datt, _titleTransform);
                Storyboard.SetTargetProperty(datt, "TranslateY");
                datt.KeyFrames.Add(new DiscreteDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(.1), Value = 0 });
                sb.Children.Add(datt);
            }

            await sb.BeginAsync();
            CleanupSnapProperties();
        }
开发者ID:cstehreem,项目名称:WinRTXamlToolkit,代码行数:43,代码来源:ToolWindow.cs

示例7: OnBorderTapped


//.........这里部分代码省略.........
                                        (0.25 + 0.75 * Math.Min(hsv.L, hsv.S));
                        var actualPosition =
                            child.TransformToVisual(grid)
                                    .TransformPoint(new Point(0, 0));
                        //Debug.WriteLine(actualPosition);
                        var deltaX = targetX - actualPosition.X;
                        var deltaY = targetY - actualPosition.Y;

                        var xa = new DoubleAnimation();
                        xa.BeginTime = beginTime;
                        xa.Duration = TimeSpan.FromSeconds(1);
                        xa.To = deltaX;
                        Storyboard.SetTarget(xa, child.RenderTransform);
                        Storyboard.SetTargetProperty(xa, "TranslateX");
                        sb1.Children.Add(xa);

                        var ya = new DoubleAnimation();
                        ya.BeginTime = beginTime;
                        ya.Duration = TimeSpan.FromSeconds(1);
                        ya.To = deltaY;
                        Storyboard.SetTarget(ya, child.RenderTransform);
                        Storyboard.SetTargetProperty(ya, "TranslateY");
                        sb1.Children.Add(ya);

                        var aa = new DoubleAnimation();
                        aa.BeginTime = beginTime;
                        aa.Duration = TimeSpan.FromSeconds(1);
                        aa.To = hsv.H;
                        Storyboard.SetTarget(aa, child.RenderTransform);
                        Storyboard.SetTargetProperty(aa, "Rotation");
                        sb1.Children.Add(aa);
                    }

                    await sb1.BeginAsync();
                }

                if (currentCall != _onBorderTappedCall)
                {
                    return;
                }

                const double revolutionDurationInS = 30d;

                foreach (var child in grid.Children)
                {
                    child.RenderTransform = new CompositeTransform();
                    child.RenderTransformOrigin = new Point(0.5, 0.5); 
                    var nc = (NamedColor)((FrameworkElement)child).DataContext;
                    var hsv = nc.Color.ToHsl();
                    var actualPosition = child.TransformToVisual(grid).TransformPoint(new Point(0, 0));

                    var sb = new Storyboard();
                    sb.RepeatBehavior = RepeatBehavior.Forever;

                    var minX = center.X - center.X * (0.25 + 0.75 * Math.Min(hsv.L, hsv.S)) - actualPosition.X;
                    var midX = center.X - actualPosition.X;
                    var maxX = center.X + center.X * (0.25 + 0.75 * Math.Min(hsv.L, hsv.S)) - actualPosition.X;
                    var minY = center.Y - center.Y * (0.25 + 0.75 * Math.Min(hsv.L, hsv.S)) - actualPosition.Y;
                    var midY = center.Y - actualPosition.Y;
                    var maxY = center.Y + center.Y * (0.25 + 0.75 * Math.Min(hsv.L, hsv.S)) - actualPosition.Y;

                    var xa = new DoubleAnimationUsingKeyFrames();
                    xa.KeyFrames.Add(new DiscreteDoubleKeyFrame { KeyTime = TimeSpan.Zero, Value = midX});
                    xa.KeyFrames.Add(new EasingDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(revolutionDurationInS * 0.25), Value = maxX, EasingFunction = new SineEase { EasingMode = EasingMode.EaseOut } });
                    xa.KeyFrames.Add(new EasingDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(revolutionDurationInS * 0.50), Value = midX, EasingFunction = new SineEase { EasingMode = EasingMode.EaseIn } });
                    xa.KeyFrames.Add(new EasingDoubleKeyFrame { KeyTime = TimeSpan.FromSeconds(revolutionDurationInS * 0.75), Value = minX, EasingFunction = new SineEase { EasingMode = EasingMode.EaseOut } });
开发者ID:siatwangmin,项目名称:WinRTXamlToolkit,代码行数:67,代码来源:UniformGridTestView.xaml.cs

示例8: ScrollToVerticalOffsetWithAnimation

 internal async Task ScrollToVerticalOffsetWithAnimation(
     double offset,
     TimeSpan duration,
     EasingFunctionBase easingFunction)
 {
     var sb = new Storyboard();
     var da = new DoubleAnimation();
     da.EnableDependentAnimation = true;
     da.From = _scrollViewer.VerticalOffset;
     da.To = offset;
     da.EasingFunction = easingFunction;
     da.Duration = duration;
     sb.Children.Add(da);
     Storyboard.SetTarget(sb, _sliderVertical);
     Storyboard.SetTargetProperty(da, "Value");
     await sb.BeginAsync();
 }
开发者ID:scubism,项目名称:OrangeWinRT,代码行数:17,代码来源:ScrollViewerExtensions.cs

示例9: ZoomToFactorWithAnimationAsync

 internal async Task ZoomToFactorWithAnimationAsync(
     double factor,
     TimeSpan duration,
     EasingFunctionBase easingFunction)
 {
     var sb = new Storyboard();
     var da = new DoubleAnimation
     {
         EnableDependentAnimation = true,
         From = this._scrollViewer.ZoomFactor,
         To = factor,
         EasingFunction = easingFunction,
         Duration = duration
     };
     sb.Children.Add(da);
     Storyboard.SetTarget(sb, this._sliderZoom);
     Storyboard.SetTargetProperty(da, "Value");
     await sb.BeginAsync();
 }
开发者ID:Syn-McJ,项目名称:PlugToolkit,代码行数:19,代码来源:ScrollViewerExtensions.cs

示例10: ScrollToHorizontalOffsetWithAnimationAsync

 internal async Task ScrollToHorizontalOffsetWithAnimationAsync(
     double offset,
     TimeSpan duration,
     EasingFunctionBase easingFunction)
 {
     var sb = new Storyboard();
     var da = new DoubleAnimation
     {
         EnableDependentAnimation = true,
         From = this._scrollViewer.HorizontalOffset,
         To = offset,
         EasingFunction = easingFunction,
         Duration = duration
     };
     sb.Children.Add(da);
     Storyboard.SetTarget(sb, this._sliderHorizontal);
     Storyboard.SetTargetProperty(da, "Value");
     await sb.BeginAsync();
 }
开发者ID:Syn-McJ,项目名称:PlugToolkit,代码行数:19,代码来源:ScrollViewerExtensions.cs

示例11: FadeOutAsync

        /// <summary>
        /// Fades the element out using the FadeOutThemeAnimation.
        /// </summary>
        /// <remarks>
        /// Opacity property of the element is not affected.<br/>
        /// The duration of the visible animation itself is not affected by the duration parameter. It merely indicates how long the Storyboard will run.<br/>
        /// If FadeOutThemeAnimation was already run before and FadeInThemeAnimation was not run after that - nothing will happen.<br/>
        /// </remarks>
        /// <param name="element"></param>
        /// <param name="duration"></param>
        /// <returns></returns>
        public static async Task FadeOutAsync(this UIElement element, TimeSpan? duration = null)
        {
            var fadeOutStoryboard = new Storyboard();
            var fadeOutAnimation = new FadeOutThemeAnimation();

            if (duration != null)
            {
                fadeOutAnimation.Duration = duration.Value;
            }

            Storyboard.SetTarget(fadeOutAnimation, element);
            fadeOutStoryboard.Children.Add(fadeOutAnimation);
            await fadeOutStoryboard.BeginAsync();
        } 
开发者ID:xyzzer,项目名称:WinRTXamlToolkit,代码行数:25,代码来源:UIElementAnimationExtensions.cs

示例12: RotateByAsync

        /// <summary>
        /// Rotates an element by relative angles
        /// </summary>
        /// <param name="element">Element to rotate</param>
        /// <param name="deltaAngles">Relative angles rotation</param>
        /// <param name="durationInSeconds">Duration in seconds</param>
        /// <param name="OnComplete">[Optional] Action to perform on complete</param>
        /// <returns>Storyboard created</returns>
        public static async Task<Storyboard> RotateByAsync(this FrameworkElement element, double deltaAngles,
         double durationInSeconds, Action OnComplete = null)
        {

            ValidateForNull(element);
            ValidateCompositeTransform(element);

            Storyboard sb = new Storyboard();

            DoubleAnimation rotationAnimation = CreateDoubleAnimation(element,
                durationInSeconds, deltaAngles + (element.RenderTransform as CompositeTransform).Rotation,
                "(FrameworkElement.RenderTransform).(CompositeTransform.Rotation)");


            sb.Children.Add(rotationAnimation);
            await sb.BeginAsync();
            if (OnComplete != null) OnComplete();
            return sb;
        }
开发者ID:Ivalaostia,项目名称:UniversalHelpers,代码行数:27,代码来源:StoryboardHelpers.cs

示例13: BeginCascadingTransitionAsync


//.........这里部分代码省略.........
                                KeyTime = totalDelay + (CascadeIn ? CascadeInDuration : TimeSpan.Zero) + HoldDuration + CascadeOutDuration,
                                EasingFunction = CascadeOutEasingFunction,
                                Value = ToRotation
                            });
                    }
                }

                if (CascadeIn)
                {
                    yAnimation.KeyFrames.Add(
                        new DiscreteDoubleKeyFrame
                        {
                            KeyTime = totalDelay,
                            Value = FromVerticalOffset
                        });
                    yAnimation.KeyFrames.Add(
                        new EasingDoubleKeyFrame
                        {
                            KeyTime = totalDelay + CascadeInDuration,
                            EasingFunction = CascadeInEasingFunction,
                            Value = 0
                        });

                    if (UseFade)
                    {
                        opacityAnimation.KeyFrames.Add(
                            new DiscreteDoubleKeyFrame
                            {
                                KeyTime = totalDelay,
                                Value = 0
                            });
                        opacityAnimation.KeyFrames.Add(
                            new EasingDoubleKeyFrame
                            {
                                KeyTime = totalDelay + CascadeInDuration,
                                EasingFunction = FadeInEasingFunction,
                                Value = 1.0
                            });
                    }
                }

                if (CascadeOut)
                {
                    yAnimation.KeyFrames.Add(
                        new DiscreteDoubleKeyFrame
                        {
                            KeyTime = totalDelay + (CascadeIn ? CascadeInDuration : TimeSpan.Zero) + HoldDuration,
                            Value = 0
                        });
                    yAnimation.KeyFrames.Add(
                        new EasingDoubleKeyFrame
                        {
                            KeyTime = totalDelay + (CascadeIn ? CascadeInDuration : TimeSpan.Zero) + HoldDuration + CascadeOutDuration,
                            EasingFunction = CascadeOutEasingFunction,
                            Value = ToVerticalOffset
                        });

                    if (UseFade)
                    {
                        opacityAnimation.KeyFrames.Add(
                            new DiscreteDoubleKeyFrame
                            {
                                KeyTime = totalDelay + (CascadeIn ? CascadeInDuration : TimeSpan.Zero) + HoldDuration,
                                Value = 1.00
                            });
                        opacityAnimation.KeyFrames.Add(
                            new EasingDoubleKeyFrame
                            {
                                KeyTime = totalDelay + (CascadeIn ? CascadeInDuration : TimeSpan.Zero) + HoldDuration + CascadeOutDuration,
                                EasingFunction = FadeOutEasingFunction,
                                Value = 0.0
                            });
                    }
                }

                totalDelay += CascadeInterval;
                i += j;
            }

            EventHandler<object> eh = null;
            eh = (s, e) =>
            {
                cascadeStoryboard.Completed -= eh;
                //LayoutRoot.Children.Clear();
                //var tb2 = CreateTextBlock(null);
                //tb2.Text = Text;
                //LayoutRoot.Children.Add(tb2);

#if CascadingTextBlock_REPEATFOREVER
                BeginCascadingTransition();
#else
                if (CascadeCompleted != null)
                    CascadeCompleted(this, EventArgs.Empty);
#endif
            };

            cascadeStoryboard.Completed += eh;
            await Task.Delay(StartDelay);
            await cascadeStoryboard.BeginAsync();
        }
开发者ID:siatwangmin,项目名称:WinRTXamlToolkit,代码行数:101,代码来源:CascadingTextBlock.xaml.cs

示例14: StartCountdownAsync

        /// <summary>
        /// Starts the countdown and completes when the countdown completes.
        /// </summary>
        /// <param name="seconds">The seconds.</param>
        /// <returns></returns>
        public async Task StartCountdownAsync(int seconds)
        {
            _countingDown = true;

            this.Seconds = seconds;

            bool grow = true;

            while (this.Seconds > 0)
            {
                var sb = new Storyboard();

                if (grow)
                {
                    ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "grow");

                    var da = new DoubleAnimation
                    {
                        From = 0d,
                        To = 359.999d,
                        Duration = new Duration(TimeSpan.FromSeconds(1d)),
                        EnableDependentAnimation = true
                    };

                    sb.Children.Add(da);
                    sb.RepeatBehavior = new RepeatBehavior(1);

                    // Workaround for a problem animating custom dependency properties
                    //PART_RingSlice.SetBinding(
                    //   RingSlice.EndAngleProperty,
                    //   new Binding { Source = r1, Path = new PropertyPath("Opacity"), Mode = BindingMode.OneWay });
                    //Storyboard.SetTargetProperty(da, "Opacity");
                    //Storyboard.SetTarget(sb, r1);
                    Storyboard.SetTargetProperty(da, "EndAngle");
                    Storyboard.SetTarget(sb, PART_RingSlice);
                }
                else
                {
                    ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "shrink");

                    var da = new DoubleAnimation
                    {
                        From = 0d,
                        To = 359.999d,
                        Duration = new Duration(TimeSpan.FromSeconds(1d)),
                        EnableDependentAnimation = true
                    };

                    sb.Children.Add(da);
                    sb.RepeatBehavior = new RepeatBehavior(1);

                    //PART_RingSlice.SetBinding(
                    //   RingSlice.StartAngleProperty,
                    //   new Binding { Source = r2, Path = new PropertyPath("Opacity"), Mode = BindingMode.OneWay });
                    //Storyboard.SetTargetProperty(da, "Opacity");
                    //Storyboard.SetTarget(sb, r2);
                    Storyboard.SetTargetProperty(da, "StartAngle");
                    Storyboard.SetTarget(sb, PART_RingSlice);
                }

                PART_Label.Text = this.Seconds.ToString();
                
                ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "before animation");
                await sb.BeginAsync();
                ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "after animation");

                if (grow)
                {
                    PART_RingSlice.StartAngle = 0d;
                    PART_RingSlice.EndAngle = 359.999d;
                }
                else
                {
                    PART_RingSlice.StartAngle = 0d;
                    PART_RingSlice.EndAngle = 0d;
                }

                grow = !grow;
                this.Seconds--;
            }

            PART_Label.Text = this.Seconds.ToString();

            if (this.CountdownComplete != null)
            {
                ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "before countdowncomplete");
                CountdownComplete(this, new RoutedEventArgs());
                ////Debug.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + "after countdowncomplete");
            }

            _countingDown = false;
        }
开发者ID:siatwangmin,项目名称:WinRTXamlToolkit,代码行数:97,代码来源:CountdownControl.xaml.cs

示例15: BeginSleepStoryboardAsync

 /// <summary>
 /// Simulates a thread sleep
 /// </summary>
 /// <param name="durationInSeconds">Duration in seconds</param>
 /// <returns>Storyboard created</returns>
 public async static Task<Storyboard> BeginSleepStoryboardAsync(double durationInSeconds)
 {
     Storyboard sb = new Storyboard();
     sb.Duration = TimeSpan.FromSeconds(durationInSeconds);
     await sb.BeginAsync();
     return sb;
 }
开发者ID:Ivalaostia,项目名称:UniversalHelpers,代码行数:12,代码来源:StoryboardHelpers.cs


注:本文中的Windows.UI.Xaml.Media.Animation.Storyboard.BeginAsync方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。