Ejemplo n.º 1
0
 private void DragEventHandler(object sender, DragEventArgs e)
 {
     base.ResetState(false);
     if (this.animation)
     {
         this.flickDistance = Vector2.Zero;
         this.animation     = false;
     }
     this.animationState = ScrollPanel.AnimationState.Drag;
     if (this.ScrollBarVisibility == ScrollBarVisibility.ScrollingVisible)
     {
         this.scrollBarH.Visible = this.isHorizontalScrollable();
         this.scrollBarV.Visible = this.isVerticalScrollable();
     }
     if (this.isHorizontalScrollable())
     {
         this.panel.X += e.Distance.X;
         this.panel.X  = MathUtility.Clamp <float>(this.panel.X, this.Width - this.panel.Width, 0f);
     }
     if (this.isVerticalScrollable())
     {
         this.panel.Y += e.Distance.Y;
         this.panel.Y  = MathUtility.Clamp <float>(this.panel.Y, this.Height - this.panel.Height, 0f);
     }
     this.UpdateScrollBarPos();
 }
Ejemplo n.º 2
0
        protected override void OnUpdate(float elapsedTime)
        {
            base.OnUpdate(elapsedTime);
            if (!this.animation)
            {
                return;
            }
            if (Math.Abs(this.flickDistance.X) < 0.5f && Math.Abs(this.flickDistance.Y) < 0.5f)
            {
                this.flickDistance  = Vector2.Zero;
                this.animationState = ScrollPanel.AnimationState.None;
                this.animation      = false;
                this.UpdateView();
                return;
            }
            this.animationElapsedTime += elapsedTime;
            float num = (float)Math.Exp((double)(-(double)this.animationElapsedTime * 0.00539892027f));

            this.flickDistance = this.startFlickDistance * num;
            if (Math.Abs(this.flickDistance.X) > 0.5f)
            {
                this.panel.X = this.startPanelPos.X + (this.startFlickDistance.X - this.flickDistance.X) / 0.09f;
                this.panel.X = FMath.Clamp(this.panel.X, this.Width - this.panel.Width, 0f);
            }
            if (Math.Abs(this.flickDistance.Y) > 0.5f)
            {
                this.panel.Y = this.startPanelPos.Y + (this.startFlickDistance.Y - this.flickDistance.Y) / 0.09f;
                this.panel.Y = FMath.Clamp(this.panel.Y, this.Height - this.panel.Height, 0f);
            }
            this.UpdateScrollBarPos();
        }
Ejemplo n.º 3
0
 protected internal override void OnTouchEvent(TouchEventCollection touchEvents)
 {
     base.OnTouchEvent(touchEvents);
     if (touchEvents.PrimaryTouchEvent.Type == TouchEventType.Up && !this.animation)
     {
         if (this.ScrollBarVisibility == ScrollBarVisibility.ScrollingVisible)
         {
             this.scrollBarH.Visible = false;
             this.scrollBarV.Visible = false;
         }
         this.animationState = ScrollPanel.AnimationState.None;
     }
     if (this.animationState != ScrollPanel.AnimationState.Drag && this.animationState != ScrollPanel.AnimationState.Flick)
     {
         touchEvents.Forward = true;
     }
 }
Ejemplo n.º 4
0
        public ScrollPanel()
        {
            this.panel      = new Panel();
            this.panel.Clip = true;
            base.AddChildLast(this.panel);
            this.scrollBarH = new ScrollBar(ScrollBarOrientation.Horizontal);
            this.scrollBarV = new ScrollBar(ScrollBarOrientation.Vertical);
            base.AddChildLast(this.scrollBarH);
            base.AddChildLast(this.scrollBarV);
            this.animationState      = ScrollPanel.AnimationState.None;
            base.Clip                = true;
            base.HookChildTouchEvent = true;
            DragGestureDetector dragGestureDetector = new DragGestureDetector();

            dragGestureDetector.DragDetected += new EventHandler <DragEventArgs>(this.DragEventHandler);
            base.AddGestureDetector(dragGestureDetector);
            FlickGestureDetector flickGestureDetector = new FlickGestureDetector();

            flickGestureDetector.FlickDetected += new EventHandler <FlickEventArgs>(this.FlickEventHandler);
            base.AddGestureDetector(flickGestureDetector);
            this.UpdateView();
        }
Ejemplo n.º 5
0
 private void FlickEventHandler(object sender, FlickEventArgs e)
 {
     base.ResetState(false);
     this.animationState = ScrollPanel.AnimationState.Flick;
     if (this.ScrollBarVisibility == ScrollBarVisibility.ScrollingVisible)
     {
         this.scrollBarH.Visible = this.isHorizontalScrollable();
         this.scrollBarV.Visible = this.isVerticalScrollable();
     }
     if (this.isHorizontalScrollable())
     {
         this.flickDistance.X = e.Speed.X * 0.03f;
     }
     if (this.isVerticalScrollable())
     {
         this.flickDistance.Y = e.Speed.Y * 0.03f;
     }
     this.startFlickDistance   = this.flickDistance;
     this.startPanelPos.X      = this.panel.X;
     this.startPanelPos.Y      = this.panel.Y;
     this.animationElapsedTime = 0f;
     this.animation            = true;
 }