Example #1
0
        private void OnRiveWindowTouchEvent(object source, Window.TouchEventArgs e)
        {
            Vector2        sp        = e.Touch.GetScreenPosition(0);
            PointStateType state     = e.Touch.GetState(0);
            Position       screenPos = new Position(sp.X, sp.Y);

            if (!scroll.ScrollEnabled)
            {
                if (state == PointStateType.Down)
                {
                    startPos  = screenPos;
                    scrollPos = scroll.Position;
                }
                Position diff = screenPos - startPos;
                scroll.PositionX = 0.0f;
                float minmaxY = scrollPos.Y + diff.Y;

                if (minmaxY > 520)
                {
                    scroll.PositionY = 520;
                }
                else if (minmaxY <= 120)
                {
                    scroll.PositionY = 120;
                }
                else
                {
                    scroll.PositionY = minmaxY;
                }

                float time = (scroll.PositionY - 120) / 400;

                // Set RiveAnimation Elapsed Time using View Position
                rav.SetAnimationElapsedTime("Pull", time);

                if (time < 1.0)
                {
                    isMoving = true;
                    // Disable RiveAnimations
                    rav.EnableAnimation("Trigger", false);
                    rav.EnableAnimation("Loading", false);
                }
                else if (time >= 1.0 && isMoving)
                {
                    isMoving = false;
                    // Enable RiveAnimations
                    rav.EnableAnimation("Trigger", true);
                    rav.EnableAnimation("Loading", true);
                    scroll.ScrollEnabled = true;
                    scroll.Size          = new Size(720, 760);
                }
            }
            else
            {
                if (preScrollPositionY == 0)
                {
                    float diff = scroll.ScrollPosition.Y - preScrollPositionY;
                    if (diff > 5)
                    {
                        scroll.ScrollTo(0, false);
                        scroll.ScrollEnabled = false;
                        scroll.Size          = new Size(720, 1160);
                        for (int i = 0; i < 5; i++)
                        {
                            viewItems[i].BackgroundImage = VIEW_BG_PATH[i];
                        }
                    }
                }
                preScrollPositionY = scroll.ScrollPosition.Y;
            }
            ravCenterY    = (120.0f + scroll.Position.Y) / 2;
            rav.PositionX = 0.0f;
            rav.PositionY = ravCenterY - 248.0f;
        }