2012年10月12日 星期五

Flash : 關於 AS2 中的 new Sound() 和 loadClip

2012年10月12日 星期五
在寫一個 Flash 的通用選單程式,編寫個設定檔,利用它可以載入一支 SWF ,再搭配不同的設定檔,以進入不同單元的內容。這項功能當然也可以用 HTML 語法編寫個網頁,不過,對 HTML 語法不熟的人來說,可能不如一個 .TXT 的設定檔來得容易。因此,把它當作一個小挑戰來完成。
程式大致完成了,正高興著時,突然發現一個問題,由選單程式載入的 .SWF ,原來用 attachSound 新增的音效居然都播放不出來了,如果不透過選單程式時又都正常。為了這個問題,試了一個多小時才找到解答。
選單載入 .SWF 時,使用的是 MovieClipLoader 的 loadClip 方法,而被載入的 .SWF 原來播放音效的方法是類似底下的程式碼:
var soundPass:Sound = new Sound();
soundPass.attachSound("sound_pass");
soundPass.start();
以前都是單一 SWF 在執行,上面的程式碼可以正常運作。今天讓它被選單程式載入後即「失聲」了。東試西試,沒找出原因,在網路上用「flash 8 MovieClipLoader sound」的關鍵字,才看到有人提供了正解,原來第一行的 new Sound() 要指定構建在哪個 target 上,也就是改為底下的內容:
var soundPass:Sound = new Sound(this);
哈!一個「this 」就解決了問題。印像中 Flash 說明的範例好像不曾指定過 target 的啊!用不少時間換來了一點點小經驗。

順便記錄一下,在 AS2 裡使用 MovieClipLoader 的 loadClip 來載入 SWF 還有另外一個問題,載入完成後,無法用 ._width 和 ._height 來取得載入的影片大小。

2 則留言:

  1. 雄老師好: 我是居住阿根廷的老師,一般我們在華文網看到的遊戲學華語, 都是四個遊戲 (比武召集令/功夫小子闖通關/蘑菇尋寶記/飛鏢)
    目前正在修讀種子進階班, 找到了一個也是您設計的華語遊戲B001b (聽對話選答案的釣魚遊戲) 打開後有1個swf動畫檔/2個swf好像是裝聲音/1個txt檔/1個hmml的網頁檔. 可否請教老師,這個遊戲如何制定? (如何放入錄好的聲音檔和 txt編寫題目?)
    黎秋月老師
    shaumeyli@gmail.com

    回覆刪除
    回覆
    1. 秋月老師您好:
      釣魚遊戲題庫的關鍵在 .txt 檔案,您以記事本打開該檔案,觀察一下每一行設定,並試著更動裡面的內容,再觀察啟動 .swf 後有什麼變化,應該就可以猜出它如何改了。您先試試,做中學可以學到更多。

      刪除

 
雄::gsyan © 2009. Design by Pocket