我是一个AS 3.0项目,我正在进入一个数组声音来组成一组特定的短语。问题在于它听起来太震撼了,并且想要制作交叉淡入淡出效果以更好地将一个单词相互连接起来。 我的问题是我无法加入他们,因为每个声音都是一个接一个地播放,有没有什么方法可以合并到下一个开头的声音结束?
非常感谢。
我正在使用的代码是这样的:
for (iii = 0; iii < numpalabras; iii ++)
{
if (abuscar2 = abuscarArray[iii])
{
vocaliza(abuscar2, iii);
}
}
iii = 0;
localSound = lossonidosArray[iii];
var soundTrans:SoundTransform = new SoundTransform;
soundTrans=SoundMixer.soundTransform;
soundTrans.volume=1;
soundTrans.pan=0;
elcanal.soundTransform = soundTrans;
elcanal = localSound.play(85, 0, soundTrans);
elcanal.addEventListener(Event.SOUND_COMPLETE, locutapalabra);
}
function locutapalabra(event:Event)
{
if (iii < (ii))
{
iii=iii+1;
localSound = lossonidosArray[iii];
var soundTrans:SoundTransform = new SoundTransform;
soundTrans=SoundMixer.soundTransform;
soundTrans.volume=1;
soundTrans.pan=0;
elcanal.soundTransform = soundTrans;
elcanal = localSound.play(85, 0, soundTrans);
elcanal.addEventListener(Event.SOUND_COMPLETE, locutapalabra);
}
function vocaliza(abuscar2, iii)
{
if (datosXML.palabras.(palabra == abuscar2).palabra == abuscar2)
{
ii++;
elfic = "mp3/" + datosXML.palabras.(palabra == abuscar2).fichero;
var elsonido :Sound = new Sound();
elsonido.addEventListener(IOErrorEvent.IO_ERROR, errorprogreso);
var laurl:URLRequest = new URLRequest(elfic);
elsonido.load(laurl);
lossonidosArray[ii] = elsonido;
}
}
我是AS 3.0编程的新手,我不清楚我的代码使这些单词相互融合,因为我可以构建几个单词的短语。
非常感谢。
答案 0 :(得分:0)
var timer:Timer = new Timer(3000) //set to how long to wait
timer.addEventListener(TimerEvent.TIMER, nextSound);
function nextSound(e:Event):void
{
listenForNextSound(); //this is where you play your next sound
}
timer
是一个计时器变量,当3秒钟过去(或者你想要多长时间)时,下一个声音将开始播放。
要使timer
变量更准确一些,您可以通过收听COMPLETE
事件来使其成为声音的持续时间:
yourTimer.addEventListener(Event.COMPLETE, function() {
timer.delay = yourTimer.length - howMuchTimeBefore;
});
答案 1 :(得分:0)
对于交叉淡入淡出,您可以使用补间库(如greensock)来补间声道的音量:
var sound:Sound = new Sound(...);
// start volume at 0
var soundChannel = sound.play(0, 0, new SoundTransform(0));
// tween volume to 1
TweenMax.to(soundChannel, 1, { volume: 1 } );
// half a second before the sound is complete, tween volume to 0
TweenMax.to(soundChannel, .5, {volume: 0, delay:(sound.length/1000)-.5});