AS3定时器在重新加载时不同步

时间:2013-11-19 14:35:47

标签: actionscript-3 flash

我正在创建一系列在播放音频片段时运行的动画。我每1000毫秒使用 TimerEvent.TIMER 事件触发这些序列。然后使用日期类我将 SoundChannel.position 转换为秒和分钟,我从秒和分钟检测到适当的时间播放序列,以便在音频片段中按特定时间流动。

我认为这种方法很有效......但是,当我“重新加载”swf时,有时甚至很少我得到这些奇怪的序列重叠,有时不按顺序播放或播放时间(这当然是一切都已预先加载后)。

可能导致这种情况的原因是什么?除了逐帧动画之外,还有什么更好的解决方案?

我的代码看起来像这样..

timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent){
                        var d:Date = new Date(0,0,0,0,0,0,channel.position);
                        switch(true)
                        {
                            case d.getMinutes() == 0 && d.getSeconds() == 8 :
                                addText(phrases.shift(),237,122); break;
                            case d.getMinutes() == 0 && d.getSeconds() == 15 :
                                addText(phrases.shift(),20,126,22);  
                                break;
                            case d.getMinutes() == 0 && d.getSeconds() == 16 :
                                removeChild(texts.shift().parent);
                                slides.slideShow(); 
                                var tween:Tween = new Tween(texts[0],"y",Strong.easeOut,texts[0].y, 63,3,true);
                                tween.addEventListener(TweenEvent.MOTION_FINISH,function(){
                                                        addText(phrases.shift(),181,100,22); 
                                                        setTimeout(function(){
                                                                   addText(phrases.shift(),181,129,42,true);
                                                                   }, 150);
                                                       });

                                break;
                            case d.getMinutes() == 0 && d.getSeconds() == 22 :
                                removeChild(texts.shift().parent); break;
                            case d.getMinutes() == 0 && d.getSeconds() == 23 :

                                slides.slideShow();
                                break;
                            case d.getMinutes() == 0 && d.getSeconds() == 24 :
                                removeChild(texts.shift().parent);
                                break;
                            case d.getMinutes() == 0 && d.getSeconds() == 25 :

0 个答案:

没有答案