【问题标题】:Remove all Timer Objects from Movie AS3 Flash从 Movie AS3 Flash 中删除所有计时器对象
【发布时间】:2011-11-28 21:12:02
【问题描述】:

当我的 flv 播放进入暂停状态时,我正在添加一个 Timer 对象,并在再次开始播放时删除该 Timer 对象。我注意到,如果我暂停电影,然后拖动时间轴上的滑块,电影会再次进入暂停状态,这会添加另一个计时器对象....

我的问题:如何检查计时器是否已添加,如果已添加,请将其删除并添加一个新的。

见下面的代码:

    my_player.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, pausePlay);
    my_player.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, startPlay);

function pausePlay(e:VideoEvent):void {

     //HERE IS WERE I NEED TO REMVOVE ALL completeTimer's BEFORE ADDING ANOTHER ONE.
        completeTimer = new Timer(pause_timeout,1);
        completeTimer.addEventListener(TimerEvent.TIMER, completeListener);
        completeTimer.start();
        trace ("IN THE PAUSE LISTENER");
}

function startPlay(e:VideoEvent):void {
    completeTimer.reset();


}

【问题讨论】:

标签: flash actionscript-3 timer


【解决方案1】:

我认为你可以做这样的事情..

//CREATE A SINGLE TIMER..
var completeTimer = new Timer(pause_timeout,1);
completeTimer.addEventListener(TimerEvent.TIMER, completeListener);

function pausePlay(e:VideoEvent):void {
    completeTimer.start();
    trace ("IN THE PAUSE LISTENER");
}
function startPlay(e:VideoEvent):void {
    completeTimer.reset();
}

【讨论】:

    【解决方案2】:

    我认为其意图是实际存储原始暂停时间而不是创建新的计时器吗?

    my_player.addEventListener(VideoEvent.PAUSED_STATE_ENTERED, pausePlay);
    my_player.addEventListener(VideoEvent.PLAYING_STATE_ENTERED, startPlay);
    
    function pausePlay(e:VideoEvent):void {
    
         //HERE IS WERE I NEED TO REMVOVE ALL completeTimer's BEFORE ADDING ANOTHER ONE.
            if(!completeTimer)
            {
                    completeTimer = new Timer(pause_timeout,1);
                    completeTimer.addEventListener(TimerEvent.TIMER, completeListener);
                    completeTimer.start();
                    trace ("IN THE PAUSE LISTENER");
            }
    }
    
    function startPlay(e:VideoEvent):void {
        completeTimer.reset();
        completeTimer = null;
    }
    

    您可能还想使用 TimerEvent.COMPLETE,尽管在这种情况下它是相同的,因为计时器只有一个滴答,您正在侦听的事件将在每个滴答期间触发,而不是在指定的刻度已运行。 (另请注意,您的延迟是以毫秒为单位而不是秒,因此这将每秒触发 1000 次或在 1/1000 秒后触发一次)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2014-01-13
      相关资源
      最近更新 更多