Пример #1
0
        public async Task AnimationEndAsync(string propertyName)
        {
            if (currentStyleNames != null)
            {
                if (!currentStyleNames.Remove(propertyName))
                {
                    Console.WriteLine("样式移除失败:" + propertyName + ",还有" + currentStyleNames.Count + "个样式等待移除");
                }
                else
                {
                    Console.WriteLine($"{propertyName}移除成功,还有{currentStyleNames.Count  }个样式等待移除");
                    while (currentStyleNames.Contains(propertyName))
                    {
                        currentStyleNames.Remove(propertyName);
                    }
                    if (currentStyleNames.Any())
                    {
                        return;
                    }
                }
            }

            if (!animating)
            {
                return;
            }
            animating = false;
            if (paths == null || !paths.Any())
            {
                if (OnAllEnd.HasDelegate)
                {
                    await OnAllEnd.InvokeAsync(null);
                }
                return;
            }
            currentPath = paths.Dequeue();
            if (currentPath.Pause.HasValue && currentPath.Pause.Value)
            {
                if (OnPause.HasDelegate)
                {
                    await OnPause.InvokeAsync(null);
                }
                taskTrigger = new TaskCompletionSource <int>();
                await taskTrigger.Task;
                taskTrigger = null;
            }
            await Task.Delay(currentPath.Delay);

            styleBuilder.Remove("transition").Add($"transition:all {(currentPath.Duration <= 0 ? 1000 : currentPath.Duration)}ms ease");
            ExecuteAnimation(currentPath.Style, currentPath.Increment);
        }