示例#1
0
文件: EZTime.cs 项目: hesansi/EZWork
        private void Pause(Delegate method)
        {
            TimerHandler handler = _handlers.FirstOrDefault(t => t.method == method);

            if (handler != null)
            {
                float remainTime = handler.end - currentTime;
                if (remainTime > 0)
                {
                    handler.remain = remainTime;
                }
                handler.pause = true;
            }
        }
示例#2
0
文件: EZTime.cs 项目: hesansi/EZWork
        void CreateTimer(Delegate method, float delayTime, bool repeat = false, float interval = 1f, int count = 1, params object[] args)
        {
            TimerHandler handler;

//            if(_pool.Count > 0) {
//                handler = _pool[_pool.Count - 1];
//                _pool.Remove(handler);
//            }
//            else {
//                handler = new TimerHandler();
//            }
            handler          = new TimerHandler();
            handler.method   = method;
            handler.delay    = delayTime;
            handler.end      = handler.delay + currentTime;
            handler.repeat   = repeat;
            handler.args     = args;
            handler.count    = count;
            handler.interval = interval;
            handler.UUID     = TimerHandler.GUUID++;
//            Debug.Log("~~~ CreateTimer() target: "+handler.method.Target+" UUID "+handler.UUID);
            _handlers.Add(handler);
        }
示例#3
0
文件: EZTime.cs 项目: hesansi/EZWork
        void UpdateTime()
        {
            if (_handlers.Count <= 0)
            {
                return;
            }
            for (int i = 0; i < _handlers.Count; i++)
            {
                TimerHandler handler = _handlers[i];
                float        curT    = currentTime;
                // 暂停处理
                if (handler.pause)
                {
                    handler.end = curT + handler.remain;
                }

                if (curT >= handler.end)
                {
                    Delegate method = handler.method;
                    object[] args   = handler.args;
                    // 是否重复
                    if (handler.repeat)
                    {
                        while (curT >= handler.end)
                        {
                            // -1代表无限重复
                            if (handler.count != -1)
                            {
                                handler.count--;
                                if (handler.count <= 0)
                                {
                                    clear(handler.method);
                                    break;
                                }
                            }
                            handler.end += handler.interval;
                            try {
                                method.DynamicInvoke(args);
                            }
                            catch {
                                Debug.LogFormat("EZTime DynamicInvokeRepeat() TargetObject Error!");
                                clear(handler.method, false);
                            }
                            finally {
//                                Debug.LogFormat("EZTime DynamicInvoke() TargetObject finally! Target " +
//                                                method.Target + " UUID: " + handler.UUID);
                            }
                        }
                    }
                    else
                    {
                        try {
                            method.DynamicInvoke(args);
//                            clear(handler.method);
                        }
                        catch {
                            Debug.LogFormat("EZTime DynamicInvoke() TargetObject Error! ");
                        }
                        finally {
                            clear(handler.method);
//                            Debug.LogFormat("EZTime DynamicInvoke() TargetObject finally! Target " +
//                                            method.Target + " UUID: " + handler.UUID);
                        }
                    }
                }
            }
        }