示例#1
0
        protected override void transitContent(bool isIn)
        {
            List <UITweener> twList;

            if (isIn)
            {
                twList = transitInTweener;
            }
            else
            {
                twList = transitOutTweener;
            }

            if (needResetBeforeTransit)
            {
                resetTransit(isIn);
            }

            UITweener longest = null;

            for (int i = 0; i < twList.Count; i++)
            {
                UITweener tw = twList[i];
                if (tw == null)
                {
                    continue;
                }

                if (!isIn && !tw.gameObject.activeInHierarchy)
                {
                    // 如果是出场,但物体已经设置为不可见了,就不再计算它了
                    continue;
                }

                if ((isIn && tw.tweenFactor >= 1) || (!isIn && tw.tweenFactor <= 0))
                {
                    continue;
                }

                if (longest == null)
                {
                    longest = tw;
                }
                else
                {
                    if (longest.duration < tw.duration)
                    {
                        longest = tw;
                    }
                }
            }

            if (longest != null)
            {
                //LogManager.Log("longest=" + longest);
                // 最终转场结束,挂接在最长的转场上
                longest.AddFinishAction(transitOver, true);
            }
            else
            {
                // 这说明没找到任何Tween转场,这时需要立刻结束
                transitOver();
                return;
            }

            for (int i = 0; i < twList.Count; i++)
            {
                UITweener tw = twList[i];
                if (tw == null)
                {
                    continue;
                }

                if (!isIn && !tw.gameObject.activeSelf)
                {
                    // 如果是出场,但物体已经设置为不可见了,就不再计算它了
                    continue;
                }

                tw.ignoreTimeScale = false;

                //LogManager.Log("play tw" + tw);
                // 播放每一个变换
                tw.Play(isIn);
            }
        }