none
[UWP] Баг в InteractionTracker RRS feed

  • Общие обсуждения

  • Всем привет. Есть проблема с InteractionTracker, и непонятно это баг или я что-то делаю не так.

    Windows 10 Pro, Версия 1809 (Сборка ОС 17763.379).

    В какой-то момент InteractionTracker перестаёт переходить в состояние Idle и изменять значения, то есть анимация зависает где-то в произвольном месте.

    Как воспроизвести баг. Нужно нажимать на кнопку так, чтобы анимированный объект не успел отъехать назад. У меня бывало получалось с нескольких кликов воспроизвести.

    MainPage.xaml

    <Page
        x:Class="Example2.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:Example2"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <local:Gallery x:Name="_gallery" /> 
            <Button Grid.Row="1" Content="Test" MinWidth="96" VerticalAlignment="Bottom" 
                    HorizontalAlignment="Center" Click="OnButtonClick"
                    Margin="0,0,0,10"/>
        </Grid>
    </Page>

    MainPage.xaml.cs

    using System;
    using System.Numerics;
    using Windows.UI.Composition;
    using Windows.UI.Composition.Interactions;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Hosting;
    
    namespace Example2
    {
        public sealed partial class MainPage : Page
        {
            private readonly Compositor _compositor;
            private readonly Visual _thisVisual;
            private InteractionTracker _tracker;
    
            public MainPage()
            {
                Loaded += MainPage_Loaded;
    
                InitializeComponent();
    
                _thisVisual = ElementCompositionPreview.GetElementVisual(this);
                _compositor = _thisVisual.Compositor;
            }
    
            private void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                var contentVisual = ElementCompositionPreview.GetElementVisual(_gallery);
    
                SetupSimpleInteractionTracker(_thisVisual, contentVisual);
            }
    
            private void SetupSimpleInteractionTracker(Visual viewportVisual, Visual contentVisual)
            {
                var source = new InteractionTrackerOwner();
                _tracker = InteractionTracker.CreateWithOwner(_compositor, source);
                
                var interactionSource = VisualInteractionSource.Create(viewportVisual);
    
                interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;
                interactionSource.PositionYSourceMode = InteractionSourceMode.EnabledWithInertia;
                interactionSource.ScaleSourceMode = InteractionSourceMode.EnabledWithInertia;
    
                _tracker.InteractionSources.Add(interactionSource);
    
                var positionExpression = _compositor.CreateExpressionAnimation("-tracker.Position");
                positionExpression.SetReferenceParameter("tracker", _tracker);
    
                contentVisual.StartAnimation("Offset", positionExpression);
            }
    
            private void OnButtonClick(object sender, RoutedEventArgs e)
            {
                var offsetAnimation = _compositor.CreateVector3KeyFrameAnimation();
                offsetAnimation.InsertKeyFrame(1f, new Vector3(_tracker.Position.X + 50, 0, 0));
                offsetAnimation.Duration = TimeSpan.FromMilliseconds(500);
                int requestId = _tracker.TryUpdatePositionWithAnimation(offsetAnimation);
            }
        }
    }

    Gallery.xaml

    <UserControl
        x:Class="Example2.Gallery"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        d:DesignHeight="300"
        d:DesignWidth="400">
        <Grid Background="LightSkyBlue">
            <Ellipse x:Name="_ellipse" Width="45" Height="45" Fill="Crimson" />
        </Grid>
    </UserControl>


    InteractionTrackerOwner.cs

    using System.Diagnostics;
    using Windows.UI.Composition.Interactions;
    
    namespace Example2
    {
        public class InteractionTrackerOwner : IInteractionTrackerOwner
        {
            public void CustomAnimationStateEntered(InteractionTracker sender, InteractionTrackerCustomAnimationStateEnteredArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.CustomAnimationStateEntered: RequestId = {args.RequestId}");
            }
    
            public void IdleStateEntered(InteractionTracker sender, InteractionTrackerIdleStateEnteredArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.IdleStateEntered: RequestId = {args.RequestId}");
            }
    
            public void InertiaStateEntered(InteractionTracker sender, InteractionTrackerInertiaStateEnteredArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.InertiaStateEntered: RequestId = {args.RequestId}");
            }
    
            public void InteractingStateEntered(InteractionTracker sender, InteractionTrackerInteractingStateEnteredArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.InteractingStateEntered: RequestId = {args.RequestId}");
            }
    
            public void RequestIgnored(InteractionTracker sender, InteractionTrackerRequestIgnoredArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.RequestIgnored: RequestId = {args.RequestId}");
            }
    
            public void ValuesChanged(InteractionTracker sender, InteractionTrackerValuesChangedArgs args)
            {
                Debug.WriteLine($"InteractionTrackerOwner.ValuesChanged: RequestId = {args.RequestId}, Position = {args.Position}, Scale = {args.Scale}");
            }
        }
    }

    Логи, из которых видно в какой момент остановился переход InteractionTracker в состояние Idle и прекратились изменяться значения. Непонятно баг ли это вообще?

    InteractionTrackerOwner.CustomAnimationStateEntered: RequestId = 3
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <4,982887  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <7,604322  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <10,61655  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <14,18482  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <18,5858  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <24,20116  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <30,76343  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <36,2808  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <40,03212  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <42,641  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <44,57415  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <46,07876  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <47,2911  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <48,29234  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <49,1342  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <49,85159  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <50,46906  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <51,00455  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <51,47155  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <51,88046  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <52,23949  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <52,55518  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <52,83288  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <53,077  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <53,29121  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 3, Position = <53,47861  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <55,74348  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <58,28897  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <61,21393  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <64,67883  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <68,95231  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <74,40499  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <80,77715  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <86,13467  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <89,77731  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <92,31062  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <94,18776  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <95,64879  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <96,826  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <97,79823  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <98,61572  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <99,31232  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <99,9119  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <100,4319  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <100,8853  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <101,2824  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <101,631  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <101,9376  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <102,2072  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <102,4443  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <102,6523  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 4, Position = <102,8343  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <105,0994  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <107,6451  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <110,5704  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <114,0357  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <118,3096  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <123,7629  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <130,1358  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <135,4939  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <139,1369  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <141,6705  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <143,5479  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <145,009  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <146,1864  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <147,1587  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <147,9763  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <148,673  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <149,2726  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <149,7926  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <150,2462  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <150,6433  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <150,9919  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <151,2985  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <151,5682  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <151,8053  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,0133  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,1953  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,3538  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,4911  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,609  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <152,6523  0  0>, Scale = 1
    InteractionTrackerOwner.InertiaStateEntered: RequestId = 5
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <151,0823  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <140,834  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <125,1409  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 5, Position = <116,3549  0  0>, Scale = 1
    InteractionTrackerOwner.CustomAnimationStateEntered: RequestId = 6
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <119,0278  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <122,0318  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <125,4837  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <129,5728  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <134,6161  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <141,051  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <148,5711  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <154,8937  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <159,1926  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <162,1822  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <164,3975  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <166,1217  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <167,511  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <168,6584  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <169,6231  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <170,4452  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <171,1528  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <171,7664  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <172,3016  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <172,7702  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <173,1816  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <173,5434  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <173,8616  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <174,1414  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <174,3868  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <174,6016  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <174,7887  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <174,9506  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <175,0898  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <175,1409  0  0>, Scale = 1
    InteractionTrackerOwner.InertiaStateEntered: RequestId = 6
    InteractionTrackerOwner.ValuesChanged: RequestId = 6, Position = <173,3396  0  0>, Scale = 1
    InteractionTrackerOwner.CustomAnimationStateEntered: RequestId = 7
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <175,6949  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <178,342  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <181,3837  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <184,9869  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <189,431  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <195,1014  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <201,728  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <207,2994  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <211,0874  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <213,7219  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <215,674  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <217,1933  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <218,4175  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <219,4286  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <220,2787  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <221,0031  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <221,6266  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <222,1674  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <222,6389  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <223,0519  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <223,4144  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <223,7332  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,0136  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,2601  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,4764  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,6657  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,8305  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <224,9732  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <225,0958  0  0>, Scale = 1
    InteractionTrackerOwner.ValuesChanged: RequestId = 7, Position = <225,1409  0  0>, Scale = 1
    InteractionTrackerOwner.InertiaStateEntered: RequestId = 7
    InteractionTrackerOwner.CustomAnimationStateEntered: RequestId = 8
    InteractionTrackerOwner.ValuesChanged: RequestId = 8, Position = <227,4142  0  0>, Scale = 1



    29 марта 2019 г. 9:23