【问题标题】:Can't stop Timer AS3无法停止计时器 AS3
【发布时间】:2013-02-11 02:00:57
【问题描述】:

这是简单的代码,但我无法解决.. 我点击a.button,所以计时器运行,但如果我点击b.button,计时器仍在运行。如何停止这个计时器?谢谢 (对不起我的英语不好)

    a.addEventListener(MouseEvent.CLICK, starts);
    function starts(e:MouseEvent)
    {
            time(0);
    }
    b.addEventListener(MouseEvent.CLICK, stops);
    function stops(e:MouseEvent)
    {
            time(1);
    }
    function time(cc)
    {
        var timer:Timer = new Timer(1000,100);
        timer.addEventListener(TimerEvent.TIMER, tmer);
        timer.start();
        function tmer(e:TimerEvent):void
        {
            trace("start");
        }
        if(cc == 1)
        {
            trace("stop");
            timer.stop();
            timer.removeEventListener(TimerEvent.TIMER, tmer);
        }
        cc=0;
    }

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    试试这个:

    a.addEventListener(MouseEvent.CLICK, starts);
    function starts(e:MouseEvent)
    {
        time(0);
    }
    b.addEventListener(MouseEvent.CLICK, stops);
    function stops(e:MouseEvent)
    {
        time(1);
    }
    
    var timer:Timer;
    function time(cc:int)
    {
        if(cc == 0)
        {
            if(!timer)
                timer = new Timer(1000,100);        
            timer.addEventListener(TimerEvent.TIMER, tmer);
            timer.start();
        }   
        else if (cc == 1)
        {
            trace("stop");
            timer.stop();
            timer.removeEventListener(TimerEvent.TIMER, tmer);
        }
    }
    
    function tmer(e:TimerEvent):void
    {
        trace("start");
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      var timer:Timer = new Timer(1000,100);
      
      // To verify if timer is running or stopping
      timer.addEventListener(TimerEvent.TIMER, tickTock);
      function tickTock(e:TimerEvent):void
      {
          trace("tick tock");
      }
      
      a.addEventListener(MouseEvent.CLICK, starts);
      function starts(e:MouseEvent)
      {
              time(0);
      }
      
      b.addEventListener(MouseEvent.CLICK, stops);
      function stops(e:MouseEvent)
      {
              time(1);
      }
      
      function time(cc)
      {
          if(cc == 0)
          {
              trace("start");
              timer.start();
          }
          else if(cc == 1)
          {
              trace("stop");
              timer.stop();
          }
      }
      

      或者简单地说:

      var timer:Timer = new Timer(1000,100);
      
      // To verify if timer is running or stopping
      timer.addEventListener(TimerEvent.TIMER, tickTock);
      function tickTock(e:TimerEvent):void
      {
          trace("tick tock");
      }
      
      a.addEventListener(MouseEvent.CLICK, starts);
      function starts(e:MouseEvent)
      {
              trace("start");
              timer.start();
      }
      
      b.addEventListener(MouseEvent.CLICK, stops);
      function stops(e:MouseEvent)
      {
              trace("stop");
              timer.stop();
      }
      

      【讨论】:

        【解决方案3】:

        这是因为您第二次创建了一个新的 Timer 对象。

        var timer:Timer = new Timer(1000,1000);
        function tmer(event:TimerEvent):void{
             trace("The timer is working");
        }
        timer.addEventListener(TimerEvent.TIMER, tmer);
        timer.stop();
         a.addEventListener(MouseEvent.CLICK, starts);
            function starts(e:MouseEvent)
            {
                    timer.reset();
                    timer.start();
            }
            b.addEventListener(MouseEvent.CLICK, stops);
            function stops(e:MouseEvent)
            {
                    timer.stop();
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-07
          相关资源
          最近更新 更多