我是一个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编程的新手,我不清楚我的代码使单词彼此组合在一起的原因,因为我可以构建包含多个单词的短语。

非常感谢你。

最佳答案

对于交叉渐变,可以使用补间库(如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});

关于actionscript-3 - CROSSFADE SOUND AS 3.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20654370/

10-12 01:39
查看更多