2010-12-15 13 views
0

私のフラッシュプロジェクトの1つのフレームに6つのボタンがあります。ボタンをクリックすると、別の曲が再生されます。シンプル。問題は、リストの最初の曲が、誰かがボタンをクリックするのを待つのではなく、2番目のプロジェクトを再生していることです。サウンドが自動的に再生されます - フラッシュ

import fl.events.SliderEvent; 
var snd:Sound; 
var channel:SoundChannel; 
var trans:SoundTransform; 
var currSong:String; 
var currVol:Number = .5; 
var currPan:Number = 0; 


var songList:Array=new Array("Drifting.mp3","Push.mp3", 
          "Stupid.mp3","Train Wreck.mp3","World on Fire.mp3","Fallen.mp3"); 


panSlide.visible=false; 
volSlide.visible=false; 


song1.addEventListener(MouseEvent.CLICK, chooseSong); 
song2.addEventListener(MouseEvent.CLICK, chooseSong); 
song3.addEventListener(MouseEvent.CLICK, chooseSong); 
song4.addEventListener(MouseEvent.CLICK, chooseSong); 
song5.addEventListener(MouseEvent.CLICK, chooseSong); 
song6.addEventListener(MouseEvent.CLICK, chooseSong); 
panSlide.addEventListener(SliderEvent.CHANGE, panChange); 
volSlide.addEventListener(SliderEvent.CHANGE, volumeChange); 



function chooseSong(e:MouseEvent):void { 
    switch (e.currentTarget.name) { 
     case "song1": 
      currSong = "../MP3s/"+songList[0] as String; 
      break; 

     case "song2": 
      currSong = "../MP3s/"+songList[1] as String; 
      break; 

     case "song3": 
      currSong = "../MP3s/"+songList[2] as String; 
      break; 

     case "song4": 
      currSong = "../MP3s/"+songList[3] as String; 
      break; 

     case "song5": 
      currSong = "../MP3s/"+songList[4] as String; 
      break; 

     case "song6": 
      currSong = "../MP3s/"+songList[5] as String; 
      break; 
    } 
    if (snd != null) { 
     channel.stop(); 
    } 
    snd = new Sound(); 
    snd.load(new URLRequest(currSong)); 

    channel = new SoundChannel ; 
    trans = new SoundTransform(currVol,currPan); 
    channel = snd.play(); 
    channel.soundTransform = trans; 
    panSlide.visible = true; 
    volSlide.visible = true; 
} 


function volumeChange(e:SliderEvent):void { 
    currVol = e.target.value; 
    trans.volume = currVol; 
    channel.soundTransform = trans; 
} 



function panChange(e:SliderEvent):void { 
    currPan = e.target.value; 
    trans.pan = e.target.value; 
    channel.soundTransform = trans; 
} 

答えて

1

音がタイムラインに誤って追加されていませんか?そうでない場合は、メソッドchooseSongの中にトレースを追加し、プロジェクトをロードするときにトリガーされるかどうかを確認する必要があります。

ステージとこのスクリプトでmc(song1)を使用して新しいファイルを作成しました。これはあなたのために働きますか?

song1.addEventListener(MouseEvent.CLICK, chooseSong); 

function chooseSong(e:MouseEvent):void { 
    trace (e.currentTarget.name) 
} 
+0

よく分かっていますが、私はタイムラインに追加しました。それを削除しましたが、ボタンをクリックしても何も演奏されません。 – Expecto

+0

関数で正しいサウンドURLを取得していますか?スイッチ後にtrace(currSong)。 – Mattias

+0

私は何も得ていません - そして、トレース(currSong)を加えても何もしません。ボタンを押すと何も起こりません。 – Expecto

1

これは暗闇の中の単なるショットですが、間違ってどこかのステージにその曲を追加したことはありませんでしたか?ムービーの読み込み時に自動的にソングが再生される場合と再生されない場合があります。

コントロールを確認しても、簡単な誤操作が問題になることがあります。

関連する問題