声音自动播放 - 闪光灯

问题描述:

在我的Flash项目中的一个框架中有6个按钮。当你点击一个按钮时,不同的歌曲播放。简单。问题是,列表中的第一首歌正在播放第二个项目,而不是等待某个人点击按钮!声音自动播放 - 闪光灯

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; 
} 

你确定你没有意外地在时间轴上添加声音吗?如果不是,则应在方法chooseSong中添加一个跟踪,并检查在加载项目时是否触发它。

我在舞台和这个脚本上创建了一个带有mc(song1)的新文件。这对你有用吗?

song1.addEventListener(MouseEvent.CLICK, chooseSong); 

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

那么你知道什么,我确实把它加到了他的时间线上。删除了,但现在没有什么玩,当你点击按钮。 – Expecto 2010-12-15 21:31:30

+0

你在函数中得到正确的声音url吗?跟踪(currSong)后切换。 – Mattias 2010-12-15 21:35:56

+0

我没有得到任何东西 - 并且添加跟踪(currSong)也不会做任何事情,当您按下按钮时间段时没有任何反应。 – Expecto 2010-12-15 21:43:16

这仅仅是一个在黑暗中拍摄,但你并没有发生歌曲意外添加到某个阶段?这可能会导致歌曲在电影加载时自动播放。

检查您的控件以及一个简单的错误点击可能是问题。