作者ybite (小犬)
看板Flash
標題Re: [問題] 沒有聲音檔 可以發出聲音嗎?
時間Thu Oct 15 12:37:43 2009
用 Flex SDK 檢查過了,找出了一些問題
* 首先,請在編譯 SWF 時
將版本設成 Flash Player 10
這應該是造成編譯錯誤的主因
(也因此要小心,在你使用你的成果 SWF 在 HTML 頁面時
要用類似 SWFObject 的函式庫來檢查 Flash 版本)
* 再來 Flash Player 10 正式版又改了一堆東西 Orz
※ 引述《hirabbitt (兔子)》之銘言:
: 原始檔來了
: 幾乎都照著影片上的寫
: sd.as檔
: package{
: import flash.display.*;
: import flash.events.*;
: import flash.media.*;
: public class sd extends Sprite{
: private var s:Sound;
: private var n:Number=0;
: public function sd():void{
: s=new sound();
: s.addEventListener(Event.SAMPLES_CALLBACK, onCallback);
↑改 SampleDataEvent.SAMPLE_DATA
: s.play();
: }
: private function onCallback(e:SampleDataEvent):void{
: n = 440;
: s.samplesCallbackData.writeFloat();
: s.samplesCallbackData.writeFloat();
↑改e.data.writeFloat();
: }
: }
: }
: RD.fla檔
: 其中有個b1的按鈕
: import sd;
: root.addEventListener(MouseEvent.CLICK,sd.sd);
: b1.addEventListener(MouseEvent.CLICK,sd.sd());
如果你需要用按鈕觸動的方式的話,我會覺得:
* sd 應該不需要 extends Sprite(因為你不需要一塊Sprite空間來放吧?)
* 你會需要有方法控制音效「停下來」,而應該是這樣作
首先在 sd 加上 private var channel:SoundChannel;
然後 s.play(); 改成 channel = s.play();
當你想要停下來(ex: setTimeout一段時間)時就呼叫 channel.stop();
參考的例子
http://bit.ly/2T0XaT (其實我也是看了手冊才知道的 XD)
而當你需要 Sound 的時候我會這樣寫:
b1.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
var mysnd:sd = new sd(); // 這樣就會發出你想要的聲音了
}
);
Function 可以分出來放,我只是 jQuery 中毒了而已 囧
: 編譯RD.fla檔的錯誤訊息
: sd.as,字行14 1046: 找不到 Type,或它不是編譯時期常數:SampleDataEvent。
: 這樣...謝謝ˊˋ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.84
※ 編輯: ybite 來自: 140.112.30.84 (10/15 12:43)
推 hirabbitt:感謝 研究中 10/15 12:57
推 hirabbitt:編譯的版本要在哪邊調啊? 我的是flash cs3 10/15 14:03
推 cjcat2266:er...你用CS3的話就沒輒了 10/15 17:34
→ ybite:檔案 > 發佈設定,按「Flash」頁籤,版本選Flash Player 10 10/15 17:34
→ cjcat2266:要用CS4或者Flex SDK + 版本設為FP10 10/15 17:34
→ ybite:等等,對,CS3只能編到Flash 9 Orz;CS4才能編到Flash 10 囧 10/15 17:35
推 osanaosana:這是說...CS3過時了嗎?...看來要準備換版了 10/15 17:42
推 cjcat2266:CS3並沒有過時...只是有些功能FP10才有而已 10/15 17:58
→ cjcat2266:我平常開發AS還是開發FP9的project 10/15 17:59
推 hirabbitt:所以說f9之前其實是沒辦法做到發聲的嘍? 10/16 17:43
推 cjcat2266:是的 10/16 17:49
→ hirabbitt:這樣啊 謝謝你 10/16 20:51