| 
 前言:director对于声音的管理实在是不敢恭维。 
不知道是不是director的一个bug: 
movie1里面sound(1)通道播放声音 
从movie1跳转到movie2的话,声音继续播放(这也是我们想要的关于背景音乐的想法,看似director很好用帮我们解决了这个问题),不过这个时候你可以测试几个函数就会发现这里面好像有bug在, 
sound(1).isbusy()=1  
表示声音通道1有声音在播放 
sound(1).status=0 
表示声音通道1空闲 
为什么会出现这种情况呢?我的理解是director对于每个影片都用了不同的8个声音管理通道,你从一个影片跳转到另一个影片的时候,这个时候director为你创建了另外8个声音通道出来,这或许是director的一个bug,因为有的人在跳转到不同的影片中需要使用同一个背景音乐,而有些人还要求控制这个背景音乐的播放暂停等,而这个时候你如果使用sound(1).pause()这个函数 确实可以停止掉当前播放的背景音乐,但是你再使用sound(1).play()这个函数的话就没有任何作用了,因为你刚才停止的是movie1里面的声音通道1,而你现在所在的movie2里面的声音通道1里面却什么都没有。不知道我是否讲清楚了这个问题。对于sound(1).isbusy()这个函数其实应该是正确的函数,错误的地方在于director对每个影片都用了不同的8个声音通道来管理,其实需要做的是对于每个projector用8个声音通道来管理就够了,这样就不会出现跳转到其它movie的时候sound(1).status=0这种事情了。  
但是问题出来了总要想办法解决 
问题:关于director里面播放背景音乐跳转movie暂停后不能重新播放的问题 
解决的办法一:靠director自己来解决 
因为到其它影片需要暂停之后再播放,而director又存在以上的bug(暂且称为bug,),所以我考虑用其它方法来解决,并且pause命令不可以用那我就自己建立背景音乐的状态信息,使用pause的时候就记录下来当是播放的时间并停止当前播放的音乐,重新播放的时候就从这个时候开始播放。 
思路:建立一个父脚本来播放音乐,这样的好处是可以用一个脚本来控制音乐,不用每个影片都存在这样的脚本。用到的函数 
queue() 播放声音的函数有很多种,但只有queue()可以从某个时间来播放(模拟暂停命令) 
sound(channel).currenttime,这个函数用来记录声音播放的时间,暂停后就从这里播放,这里顺便说一下currenttime这个函数,它是可以设置也可以检测的,但是设置的时候会延时几秒种才执行,这也让我郁闷了一下,所以上面播放音乐的函数就只能用queue(),否则可以使用其它播放函数再设置currenttime就可以了。 
sound(channel).play(),控制声音的播放 
sound(channel).stop(),控制声音的停止 
更具体的怎么个实现思路我就不写出来了,以下是代码源文件,大家可以看一下。
  
 
 
 
-- 对象方法: 
--      Object.UpdateFile("声音文件地址",声音通道)     --更新背景音乐 
--      Object.play()                                  --播放 
--      Object.pause()                                 --暂停  
--      Object.stop()                                  --停止  
--      Object.unload()                                --声音对象卸载  
--      Object.SetVolume(value)                        --设置通道音量大小 
--      Object.GetVolume(soundchannel)                 --取得通道音量大小 
-- 对象属性: 
--      pMusicFile                                     --对象播放的声音文件地址 
--      pChannel                                       --对象播放声音的通道 
--      pSoundState                                    --对象的状态 
--      pVolume                                        --对象的音量大小 
--*使用说明: 
-- 建立对象:BGM=New(script "BGMusci","声音文件地址",声音通道_默认为7)  
-- 当不使用时卸载声音对象  
 |