Example #1
0
        public void Unschedule(SEL_SCHEDULE selector)
        {
            // explicit nil handling
            if (selector == null)
            {
                return;
            }

            m_pScheduler.UnscheduleSelector(selector, this);
        }
        public void Unschedule(Action <float> selector)
        {
            // explicit nil handling
            if (selector == null)
            {
                return;
            }

            m_pScheduler.UnscheduleSelector(selector, this);
        }
Example #3
0
        /*
         * public CCTimer(int scriptHandler, float seconds)
         * {
         *  m_nScriptHandler = scriptHandler;
         *  Elapsed = -1;
         *  Interval = seconds;
         * }
         */

        #region SelectorProtocol Members

        public void Update(float dt)
        {
            if (Elapsed == -1)
            {
                Elapsed          = 0;
                m_nTimesExecuted = 0;
            }
            else
            {
                if (m_bRunForever && !m_bUseDelay)
                {
                    //standard timer usage
                    Elapsed += dt;
                    if (Elapsed >= Interval)
                    {
                        if (Selector != null)
                        {
                            Selector(Elapsed);
                        }

                        /*
                         * if (m_nScriptHandler != 0)
                         * {
                         *  CCScriptEngineManager::sharedManager()->getScriptEngine()->executeSchedule(this, m_fElapsed);
                         * }
                         */
                        Interval = OriginalInterval - (Elapsed - Interval);
                    }
                }
                else
                {
                    //advanced usage
                    Elapsed += dt;

                    if (m_bUseDelay)
                    {
                        if (Elapsed >= m_fDelay)
                        {
                            if (Selector != null)
                            {
                                Selector(Elapsed);
                            }

                            /*
                             * if (m_nScriptHandler != 0)
                             * {
                             *  CCScriptEngineManager::sharedManager()->getScriptEngine()->executeSchedule(this, m_fElapsed);
                             * }
                             */

                            Elapsed           = Elapsed - m_fDelay;
                            m_nTimesExecuted += 1;
                            m_bUseDelay       = false;
                        }
                    }
                    else
                    {
                        if (Elapsed >= Interval)
                        {
                            if (Selector != null)
                            {
                                Selector(Elapsed);
                            }

                            /*
                             * if (m_nScriptHandler)
                             * {
                             *  CCScriptEngineManager::sharedManager()->getScriptEngine()->executeSchedule(m_nScriptHandler, m_fElapsed);
                             * }
                             */

                            Interval          = OriginalInterval - (Elapsed - Interval);
                            Elapsed           = 0;
                            m_nTimesExecuted += 1;
                        }
                    }

                    if (m_nTimesExecuted > m_nRepeat)
                    {
                        //unschedule timer
                        _scheduler.UnscheduleSelector(Selector, Target);
                    }
                }
            }
        }