Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (isRun == true)
        {
            if (runForward)
            {
                oriTime = Time.realtimeSinceStartup - recTime;
            }
            else
            {
                oriTime = TweenTime - (Time.realtimeSinceStartup - recTime);
            }

            Color color = from + (to - from) * mainAniCurve.Evaluate(oriTime / TweenTime);

            image.color = color;

            if (runForward)
            {
                if (oriTime >= TweenTime)
                {
                    if (!isLoop)
                    {
                        isRun = false;

                        if (runFinish != null)
                        {
                            runFinish.Invoke(this);
                        }
                    }
                    else
                    {
                        recTime = Time.realtimeSinceStartup;
                    }
                }
            }
            else
            {
                if (oriTime <= 0)
                {
                    if (!isLoop)
                    {
                        isRun = false;
                        if (runFinish != null)
                        {
                            runFinish.Invoke(this);
                        }
                    }
                    else
                    {
                        recTime = Time.realtimeSinceStartup;
                    }
                }
            }
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (isRun == true)
        {
            if (isPopupWnd)
            {
                showGameObject.SetActive(true);
            }
            if (runForward)
            {
                oriTime = Time.realtimeSinceStartup - recTime;
            }
            else
            {
                oriTime = TweenTime - (Time.realtimeSinceStartup - recTime);
            }

            Vector3 deltaV3 = from + (to - from) * mainAniCurve.Evaluate(oriTime / TweenTime);

            transform.localScale = deltaV3;

            if (runForward)
            {
                if (oriTime >= TweenTime)
                {
                    isRun = false;

                    if (runFinish != null)
                    {
                        runFinish.Invoke(this);
                    }
                }
            }
            else
            {
                if (oriTime <= 0)
                {
                    if (isPopupWnd)
                    {
                        showGameObject.SetActive(false);
                    }
                    isRun = false;
                    if (runFinish != null)
                    {
                        runFinish.Invoke(this);
                    }
                }
            }
        }
    }
Example #3
0
        /// <summary>
        /// 开始调试
        /// </summary>
        public void Run()
        {
            // 初始化栈
            stack       = new Stack <StackFrame>();
            entryStacks = new Stack <int>();
            stacks.Add(stack);

            // 当前栈帧
            currentStackFrame = new StackFrame(0);
            globalStackFrame  = currentStackFrame;
            stack.Push(currentStackFrame);

            // 代码区长度
            int length = codesArray.Count;

            // 初始化程序计数器
            pc = 0;

            isStop = false;

            // 设置当前符号表
            currentSymbolTable = globalSymbolTable;

            // 执行中间代码
            while (pc < length && !isStop)
            {
                IntermediateCode code = codesArray[pc];
                InterpretSingleInstruction(code);
                pc++;
            }

            // 停止运行
            // 运行结束销毁
            stacks.Remove(stack);
            RunFinish?.Invoke();
        }