要保持背景音乐连续,那我们就得频繁检测播放背景音乐的声音通道是否空闲,如果空闲就用sound(1).play(member (soundmember))来播放背景音乐。
这时我们就会想到Director中的on idle句柄,只要我们在每个影片的影片剧本中放置一个on idle句柄用来检测播放背景音乐,这样就可以实现背景音乐的连续了。
但是,也正是因为在on idle句柄中的语句会被频繁地运行,如果在on idle句柄中放置的处理语句比较多,会比较耗费系统资源。
如果要回避这个问题,我们换一种思路来考虑,背景音乐为什么会中断不连续呢?就是因为在每个影片中都有播放背景音乐的处理程序,在影片跳转的时候,播放背景音乐的行为都会重新执行,如果我们用一个单独的MIAW影片来播放背景音乐,就可以做到不管你的影片怎么跳转,背景音乐都可以不受干扰的播放,除非你关闭了播放背景音乐的MIAW 。
综上所述,我们至少有两种方法来解决这个问题:
解决方法一、使用on idle句柄。
然后新建一个影片剧本(script的type属性为movie),输入以下代码:
这样就可以实现背景音乐的连续播放了,而且是在music0~music7之间随机播放。
解决方法二、使用MIAW。
首先新建一个影片,命名为soundplay.dir,导入背景音乐文件,然后将演员名命名为music0~music7,然后在剪辑室(score)双击帧脚本通道,输入以下代码:
此处与方法一相比,行为主体没有变化,只是其句柄不一样,此处是放在On exitFrame中。
然后新建一个影片,命名为main.dir,并新建一个影片剧本,输入以下代码:
只要不forget window,背景音乐一直存在并且连续,但是要记住,在关闭背景音乐或者退出影片之前,要用miaw.forget()命令来关闭子窗口。
这时我们就会想到Director中的on idle句柄,只要我们在每个影片的影片剧本中放置一个on idle句柄用来检测播放背景音乐,这样就可以实现背景音乐的连续了。
但是,也正是因为在on idle句柄中的语句会被频繁地运行,如果在on idle句柄中放置的处理语句比较多,会比较耗费系统资源。
如果要回避这个问题,我们换一种思路来考虑,背景音乐为什么会中断不连续呢?就是因为在每个影片中都有播放背景音乐的处理程序,在影片跳转的时候,播放背景音乐的行为都会重新执行,如果我们用一个单独的MIAW影片来播放背景音乐,就可以做到不管你的影片怎么跳转,背景音乐都可以不受干扰的播放,除非你关闭了播放背景音乐的MIAW 。
综上所述,我们至少有两种方法来解决这个问题:
然后新建一个影片剧本(script的type属性为movie),输入以下代码:
on idle if not soundbusy(1) then --检测声音通道1,如果空闲执行以下语句 set i=random(8)-1 --给i随机赋值0~7 RandomMusic="music" & string(i) puppetSound 1,RandomMusic --随机播放背景音乐music0~music7 end if end
这样就可以实现背景音乐的连续播放了,而且是在music0~music7之间随机播放。
首先新建一个影片,命名为soundplay.dir,导入背景音乐文件,然后将演员名命名为music0~music7,然后在剪辑室(score)双击帧脚本通道,输入以下代码:
on exitFrame me if not(soundBusy(1)) then soundmember = "music"& random(8)-1 --随机播放背景音乐 sound(1).play(member (soundmember)) end if go the frame end
此处与方法一相比,行为主体没有变化,只是其句柄不一样,此处是放在On exitFrame中。
然后新建一个影片,命名为main.dir,并新建一个影片剧本,输入以下代码:
global miaw on preparemovie miaw = window("soundplay") --新建一个window,标题名为soundplay,保存在全局变量miaw中 miaw.filename = "soundplay" --子窗口的文件名为soundplay.dir miaw.visible = false --设置子窗口为不可见 end preparemovie
只要不forget window,背景音乐一直存在并且连续,但是要记住,在关闭背景音乐或者退出影片之前,要用miaw.forget()命令来关闭子窗口。
回复Comments
作者:
{commentrecontent}