Beispiel #1
0
        protected internal override void ComputeRender(float renderProgress)
        {
            if (mCurrentBounds.IsEmpty)
            {
                return;
            }

            if (mMotherMovePath.IsEmpty)
            {
                mMotherMovePath.Set(CreateMotherMovePath());
                mMotherMovePathMeasure.SetPath(mMotherMovePath, false);

                mChildMovePath.Set(CreateChildMovePath());
                mChildMovePathMeasure.SetPath(mChildMovePath, false);
            }

            //mother oval
            float motherMoveProgress = MOTHER_MOVE_INTERPOLATOR.GetInterpolation(renderProgress);

            mMotherMovePathMeasure.GetPosTan(GetCurrentMotherMoveLength(motherMoveProgress), mMotherPosition, null);
            mMotherOvalHalfWidth  = mMaxMotherOvalSize;
            mMotherOvalHalfHeight = mMaxMotherOvalSize * GetMotherShapeFactor(motherMoveProgress);

            //child Oval
            float childMoveProgress = CHILD_MOVE_INTERPOLATOR.GetInterpolation(renderProgress);

            mChildMovePathMeasure.GetPosTan(GetCurrentChildMoveLength(childMoveProgress), mChildPosition, null);
            SetupChildParams(childMoveProgress);

            mRotateDegrees = (int)(DensityUtil.Radian2Degrees(Math.Atan((mMotherPosition[1] - mChildPosition[1]) / (mMotherPosition[0] - mChildPosition[0]))));

            mRevealCircleRadius     = GetCurrentRevealCircleRadius(renderProgress);
            mCurrentOvalColor       = GetCurrentOvalColor(renderProgress);
            mCurrentBackgroundColor = GetCurrentBackgroundColor(renderProgress);
        }