我正在创建一系列在播放音频片段时运行的动画。我每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 :