国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 媒體動畫 > 正文

Authorware綜合技巧:random循環選擇播放midI背景音樂

2024-09-08 19:25:13
字體:
來源:轉載
供稿:網友
  我們在上面介紹的“循環播放midi背景音樂”范例中只能播放一首midi音樂對象,這樣顯的比較單調,如果我們要實現多首midi背景音樂的隨機循環選擇播放,能實現嗎?答案是肯定的。

  在這里我們要介紹另外一個外部函數a5wmme.u32。這個函數包括各種多媒體的播放控制函數,如動畫、cd、midi、wav等的控制函數,其中我們可以利用的控制midi音樂播放的函數有:

midipause()

midiplay(filename, tempo, wait)

midiplaying()

midiplaysegment(filename, tempo, fromseconds, forseconds, wait)

midiresume()

midistop()

a5wmme.u32對midi音樂的控制函數比起midiloop.u32可就強大多了。

  在本范例中,有兩個核心問題:一是如何實現隨機選擇不同的midi音樂的問題,二是如何讓midi循環播放。解決第一個問題的方法是以所有要播放的midi聲音文件名“創建”一個播放列表,這里“創建”的列表并不是真正存在的播放列表,而是通過系統函數“catalog”將存放midi音樂的文件夾中的文件名以字符串的形式賦給變量,即所謂的播放列表,最后通過系統函數“random”隨機選擇“播放列表”中的midi文件進行播放。而解決第二個問題的方法是利用了永久型的條件交互的一點技巧而已。一起來看看如何實現吧!

1、 執行界面預覽,如圖3.4



圖3.4 范例程序執行效果

2、 程序的流程圖如圖3.5



圖3.5 范例程序流程圖
3、操作步驟:

1) 新建一個文件,并調入外部函數a5wmme.u32的相關擴展函數:

midiplay(filename, tempo, wait)

這個函數的功能即播放指定的midi音樂文件,其中“filename”參數即指定播放的midi音樂文件名;“tempo”參數是播放midi的速率,例如tempo =100表示以正常的速率播放midi;“wait”參數是播放midi的等待時間,例如wait=0即為立刻播放指定的midi音樂。

midiplaying()

判斷當前是否正在播放midi音樂,如果條件為真則返回“1”,條件為假則返回“0”

midistop()

停止當前正在播放的midi音樂

2) 設置屏幕大小和背景,如圖3.6和圖3.7所示



圖3.6 設置演示窗口大小



圖3.7 設置范例的背景



圖3.8 創建“播放列表”的內容

3) 創建“播放列表”,如圖3.8,在計算圖標中寫入以下代碼:

midilist:=catalog(filelocation^"midi","f") ----把midi文件夾下的midi文件名

midinum:=linecount(midilist) ----賦值給字符串變量midilist,實現

midilist_bak:=midilist ----隨機選擇midi文件

midinum_bak:=midinum

ramdonnum:=random(1,midinum,1)

currentfile:=getline(midilist,ramdonnum)

deleteline(midilist,ramdonnum)

midinum:=midinum-1
4) 開始播放midi文件,并進行隨機循環選擇控制。

(1) 在交互“midiloop”右邊添加一永久條件交互,條件為“~(midiplaying()&sec)”返回類型設置為“return”,相關設置如圖3.9所示;在計算圖標里寫入以下代碼,如圖3.10所示:

----判斷恢復“播放列表”,即實現循環的目的

if midinum=0 then

midilist:=midilist_bak

midinum:=midinum_bak

end if

----繼續隨機選擇播放新的midi文件

ramdonnum:=random(1,midinum,1)

currentfile:=getline(midilist,ramdonnum)

midilist:=deleteline(midilist,ramdonnum)

midinum:=midinum-1

midiplay(filelocation^"midi//"^currentfile,100,0)



圖3.9 永久條件的設置



圖3.10 永久條件交互的執行內容

為什么要設置永久條件為“~(midiplaying()&sec)”呢?其實原理就是通過系統變量sec的不斷變化,迫使系統去檢查整個表達式的值,當midi停止播放時,midiplaying()返回“0”,條件表達式立刻變為真,系統自動執行計算圖標“~(midiplaying()&sec)”里的相關內容,即播放下一首隨機選擇的midi音樂文件,從而實現了midi背景音樂的隨機選擇循環播放的功能。

(2)再在交互“midiloop”的右邊繼續添加兩個按鈕響應交互“next”和“quit”,返回類型設置為“return”。其中“next”交互的作用是手動選擇播放下一首midi,其實只要在它的計算圖標里寫上“midistop()”即可實現,為什么?自己想一想。“quit”按鈕交互實現退出程序執行。

(3)在交互“midiloop”流程的后面添加一計算圖標“playmidi”,輸入代碼:

midiplay(filelocation^"midi//"^currentfile,100,0)

不知道大家注意到程序的流程了沒有,其實這才是系統最先播放執行的mid

[1] [2] 下一頁  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 达孜县| 屏南县| 隆林| 工布江达县| 长丰县| 台东市| 娱乐| 耒阳市| 景东| 历史| 金川县| 张掖市| 葵青区| 教育| 景谷| 广元市| 稻城县| 法库县| 法库县| 县级市| 镇安县| 沁阳市| 嘉义县| 泰兴市| 曲阜市| 鄂托克前旗| 枣强县| 金湖县| 新和县| 洞头县| 安丘市| 宽城| 葵青区| 旬邑县| 镶黄旗| 沽源县| 府谷县| 井冈山市| 呼图壁县| 怀化市| 江达县|