コード例 #1
0
        public void sendUpdate(Clock clock)
        {
            float blendPercent = currentTime / animationDuration;

            if (showing)
            {
                if (blendPercent > 1.0f)
                {
                    childLayout.setAlpha(1.0f);
                    unsubscribeFromUpdates();
                }
                else
                {
                    childLayout.setAlpha(blendPercent);
                }
            }
            else
            {
                if (blendPercent > 1.0f)
                {
                    childLayout.setAlpha(0.0f);
                    unsubscribeFromUpdates();
                    if (animationComplete != null)
                    {
                        animationComplete.Invoke(null);
                    }
                }
                childLayout.setAlpha(1.0f - blendPercent);
            }
        }
コード例 #2
0
        public void sendUpdate(Clock clock)
        {
            if (animating)
            {
                currentTime += clock.DeltaSeconds;
                if (currentTime < animationLength)
                {
                    alpha       = EasingFunctions.Ease(currentEasing, 0, 1.0f, currentTime, animationLength);
                    currentSize = new IntSize2((int)(oldSize.Width + sizeDelta.Width * alpha), WorkingSize.Height);
                }
                else
                {
                    currentTime = animationLength;
                    alpha       = 1.0f;
                    currentSize = new IntSize2(oldSize.Width + sizeDelta.Width, WorkingSize.Height);

                    finishAnimation();
                    oldChildContainer = null;
                }
                if (childContainer != null && oldChildContainer != null)
                {
                    childContainer.setAlpha(alpha);
                }
                invalidate();
            }
        }
コード例 #3
0
        public override void setAlpha(float alpha)
        {
            //Top
            if (top != null)
            {
                top.setAlpha(alpha);
            }

            //Bottom
            if (bottom != null)
            {
                bottom.setAlpha(alpha);
            }

            //Left
            if (left != null)
            {
                left.setAlpha(alpha);
            }

            //Center
            if (center != null)
            {
                center.setAlpha(alpha);
            }

            //Right
            if (right != null)
            {
                right.setAlpha(alpha);
            }
        }
コード例 #4
0
 public override void setAlpha(float alpha)
 {
     this.alpha = alpha;
     if (child != null)
     {
         child.setAlpha(alpha);
     }
 }
コード例 #5
0
 public void insertChild(LayoutContainer child, int index)
 {
     child.SuppressLayout = true;
     children.Insert(index, child);
     child._setParent(this);
     child.Visible = visible;
     child.setAlpha(alpha);
     child.SuppressLayout = false;
     invalidate();
 }
コード例 #6
0
 public void addChild(LayoutContainer child)
 {
     child.SuppressLayout = true;
     children.Add(child);
     child._setParent(this);
     child.Visible = visible;
     child.setAlpha(alpha);
     child.SuppressLayout = false;
     invalidate();
 }
コード例 #7
0
 private void finishAnimation()
 {
     //reset the old child
     if (oldChildContainer != null)
     {
         oldChildContainer._setParent(null);
         oldChildContainer.setAlpha(1.0f);
         oldChildContainer.WorkingSize = oldSize;
         oldChildContainer.animatedResizeCompleted(oldSize);
         oldChildContainer.layout();
     }
     fireAnimationComplete(oldChildContainer);
     if (childContainer != null)
     {
         childContainer.animatedResizeCompleted(currentSize);
     }
     unsubscribeFromUpdates();
 }
コード例 #8
0
        public override void changePanel(LayoutContainer childContainer, float animDuration)
        {
            //If we were animating when a new request comes in clear the old animation first.
            if (animating)
            {
                if (this.childContainer != null)
                {
                    this.childContainer.setAlpha(1.0f);
                    this.childContainer.WorkingSize = newSize;
                    this.childContainer.layout();
                    finishAnimation();
                }
                else
                {
                    //If we were transitioning to null, but now there is another container use the child that was being transitioned
                    this.childContainer = oldChildContainer;
                    unsubscribeFromUpdates();
                }
            }

            currentTime     = 0.0f;
            animationLength = animDuration;

            oldChildContainer = this.childContainer;
            if (oldChildContainer != null)
            {
                oldSize = oldChildContainer.DesiredSize;
                oldChildContainer.animatedResizeStarted(new IntSize2(oldSize.Width, WorkingSize.Height));
            }
            else
            {
                oldSize = new IntSize2(0, 0);
            }

            this.childContainer = childContainer;
            if (childContainer != null)
            {
                childContainer._setParent(this);
                newSize = childContainer.DesiredSize;
                childContainer.animatedResizeStarted(new IntSize2(newSize.Width, WorkingSize.Height));
                //Force the child container to fit in the current alloted space
                childContainer.Location    = Location;
                childContainer.WorkingSize = new IntSize2(oldSize.Width, WorkingSize.Height);
                childContainer.layout();
            }
            else
            {
                newSize = new IntSize2(0, 0);
            }

            sizeDelta = newSize - oldSize;

            if (oldSize.Width == 0)
            {
                currentEasing = EasingFunction.EaseOutQuadratic;
            }
            else if (newSize.Width == 0)
            {
                currentEasing = EasingFunction.EaseInQuadratic;
            }
            else
            {
                currentEasing = EasingFunction.EaseInOutQuadratic;
            }

            //Make sure we start with no alpha if blending
            if (childContainer != null && oldChildContainer != null)
            {
                childContainer.setAlpha(0.0f);
            }

            subscribeToUpdates();
        }