声音自动播放 - 闪光灯
问题描述:
在我的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)
}
答
这仅仅是一个在黑暗中拍摄,但你并没有发生歌曲意外添加到某个阶段?这可能会导致歌曲在电影加载时自动播放。
检查您的控件以及一个简单的错误点击可能是问题。
那么你知道什么,我确实把它加到了他的时间线上。删除了,但现在没有什么玩,当你点击按钮。 – Expecto 2010-12-15 21:31:30
你在函数中得到正确的声音url吗?跟踪(currSong)后切换。 – Mattias 2010-12-15 21:35:56
我没有得到任何东西 - 并且添加跟踪(currSong)也不会做任何事情,当您按下按钮时间段时没有任何反应。 – Expecto 2010-12-15 21:43:16