我对 AS 有点陌生,但仍在努力学习和完成看似艰难的事情。我会胜利的!
下面的代码显示了我到目前为止的进展。我有一个带有一系列缩略图的 UI 加载器。每次单击缩略图都会加载一个新的 SWF 文件...好吧,我正在尝试通过 XML 文件获取一系列外部 mp3 文件来执行相同的操作。到目前为止,我已经设法在每次点击时只播放一个音频文件,并在现有文件上播放。
我只想让每个缩略图播放一个新的,并在用户单击新缩略图时停止播放以前的音频文件。
如果可能,请提供帮助...帮助我查看我的方式的错误。有点不知所措。
var imagesXML:XML;
var xmlLoader: URLLoader = new URLLoader();
xmlLoader.addEventlistener(Event.COMPLETE, xmlLoaded);
xmlLoader.load(new URLRequest("lessons/images/Images5.xml"));
/////////////////////////////////////////////////////////////
//////////// thumbnail loader /////////////////////////
var mySound:Sound;
var myChannel:SoundChannel;
function xmlLoaded(evt:Event):void
{
imagesXML = new XML(xmlloader.data);
var thumbLoader:UILoader;
for(var i:uint = 0; i < imagesXML.image.length(); i++)
{
thumbLoader UILoader(getChildByName("thumb" + 1));
thumbLoader.load(new URLRequest("lessons/images/thumbs/" + imagesXML.image[i].@file));
thumbLoader.buttonmode = true;
thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked);
var fullPath:String = "lessons/images/file-1.swf";
mainLoader.load(new URLRequest(fullpath));
}
}
/////////////////////////////////////////////////////////////
//////////////// load Images /////////////////////////////
function thumbClicked(evt:MouseEvent):void
{
var thumbName:String = evt.currentTarget.name;
var thumbIndex:uint = uint(thumbName.substr(5));
var fullPath:String = "lessons/images/" + imagesXML.image[thumbIndex].@file;
mainLoader.load(new URLRequest(fullPath));
//stop any sound playing
if (myChannel != null)
{
myChannel.stop();
}
// load mp3 file
mySound = new Sound(); myChannel = new SoundChannel();
mySound.load(new URLRequest ("lessons/audio/narration/ch1p3.mp3"));
mySound.play();
}
编辑
我还需要根据单击的缩略图制作动态播放的声音。
这是我更新的代码:
var imagesXML:XML;
var xmlLoader: URLLoader = new URLLoader();
xmlLoader.addEventlistener(Event.COMPLETE, xmlLoaded);
xmlLoader.load(new URLRequest("lessons/images/Images5.xml"));
var thumbSounds:Dictionary = new Dictionary();
/////////////////////////////////////////////////////////////
//////////// thumbnail loader /////////////////////////
var mySound:Sound;
var myChannel:SoundChannel;
function xmlLoaded(evt:Event):void
{
imagesXML = new XML(xmlloader.data);
var thumbLoader:UILoader;
for(var i:uint = 0; i < imagesXML.image.length(); i++)
{
thumbLoader UILoader(getChildByName("thumb" + 1));
thumbLoader.load(new URLRequest("lessons/images/thumbs/" + imagesXML.image[i].@file));
thumbLoader.buttonmode = true;
thumbLoader.addEventListener(MouseEvent.CLICK, thumbClicked);
var fullPath:String = "lessons/images/file-1.swf";
mainLoader.load(new URLRequest(fullpath));
thumbSounds[thumbLoader] = "lessons/audio/narration/sound/ch1" + i + ".mp3";
//load mp3 file
mySound = new Sound();
myChannel = new SoundChannel();
mySound.load(new URLRequest ("lessons/audio/narration/ch1p3.mp3"));
myChannel = mySound.play();
}
}
/////////////////////////////////////////////////////////////
//////////////// load Images /////////////////////////////
function thumbClicked(evt:MouseEvent):void
{
var thumbName:String = evt.currentTarget.name;
var thumbIndex:uint = uint(thumbName.substr(5));
var fullPath:String = "lessons/images/" + imagesXML.image[thumbIndex].@file;
mainLoader.load(new URLRequest(fullPath));
//stop any sound playing
if (myChannel != null)
{
trace("HOLD sound");
SoundMixer.stopAll();
}
mySound = new Sound();
myChannel = new SoundChannel();
mySound.load(new URLRequest (thumbSounds[evt.currentTarget]));
myChannel = mySound.play();
trace("now playing" + thumbSounds[evt.currentTarget]);
}