2012-04-26 63 views
0

FrogActionScript 3个的声音

我正在开发一个Flash游戏叫青蛙,在我的声音代码似乎有点多的时刻,我想简化它,但不能看到。任何帮助,将不胜感激。

var musicSC:SoundChannel = new SoundChannel(); 
var musicST:SoundTransform = new SoundTransform(); 
var musicS:Sound = new Sound(); 
var musicURLR:URLRequest = new URLRequest('audio/music.mp3'); 
var flySC:SoundChannel = new SoundChannel(); 
var flyST:SoundTransform = new SoundTransform(); 
var flyS:Sound = new Sound(); 
var flyURLR:URLRequest = new URLRequest('audio/fly.mp3'); 
var frogSC:SoundChannel = new SoundChannel(); 
var frogST:SoundTransform = new SoundTransform(); 
var frogS:Sound = new Sound(); 
var frogURLR:URLRequest = new URLRequest('audio/frog.mp3'); 

function loopMusic():void { 
    musicSC = musicS.play(); 
    musicSC.addEventListener(Event.SOUND_COMPLETE, loopMusic); 
} 
function loopFrog():void { 
    frogSC = frogS.play(); 
    frogSC.addEventListener(Event.SOUND_COMPLETE, loopFrog); 
} 
function playFly():void { 
    flySC = flyS.play(); 
} 

musicS.load(musicURLR); 
flyS.load(flyURLR); 
frogS.load(frogURLR); 
loopMusic(); 
loopFrog(); 

回答

0

声音对象的播放方法具有用于循环的数量的第二个参数:

musicS.play(0,int.MAX_VALUE的);

int.MAX_VALUE应该足够循环您的应用程序。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html

+0

谢谢你,我会用它,因为int.MAX_VALUE的是一个高得离谱的数字,我不应该需要比这更多。然而,纯粹为了将来的参考,是否没有更有效的方法来“循环无限”? – 2012-04-27 09:36:27

+0

另外,我应该使用多个声道吗?我认为这将是能够单独操纵我的声音的最佳方法,这是正确的吗? – 2012-04-27 09:37:40

+0

这是最简洁的方法,但它有一个缺点,那就是循环不是无缝的(Flash会在加载的MP3开头插入一个小的静音,尽管如果声音嵌入IDE )。如果您无法忍受这种差距,请在这里查看一些解决方案:http://forums.flixel.org/index.php?topic=2964.0。 – 2012-04-27 13:23:03