我正在尝试创建一个迷你媒体播放器AIR应用程序,允许用户查看通过外部XML文件加载的视频,图像和歌曲,同时还允许用户浏览自己的文件并通过观众。目前,我可以在点击图像拇指时让视频停止播放,但是当新视频开始时我无法停止播放任何声音。事实上,我甚至无法改变歌曲。一旦你点击一首歌曲,它就会播放并且不会停止,并且它不能被另一首歌曲取代。
以下是我正在使用的代码:
// for audio
public var _channel:SoundChannel = new SoundChannel();
public var _sound:Sound = new Sound();
public function getDetails():void{
var mySelectedItem:File = tree.selectedItem as File;
var type:String;
type = mySelectedItem.url.substr(mySelectedItem.url.lastIndexOf("."))
switch (type)
{
case ".mp3":
_sound.load(new URLRequest(mySelectedItem.url));
_channel = _sound.play();
if (mainVideo.source == null){
// do nothing
} else {
mainVideo.pause();
}
break;
case ".jpg":
mainImage.source = mySelectedItem.url;
mainVideo.visible = false;
mainImage.visible = true;
if (mainVideo.source == null){
// do nothing
} else {
mainVideo.pause();
}
break;
case ".png":
mainImage.source = mySelectedItem.url;
mainVideo.visible = false;
mainImage.visible = true;
if (mainVideo.source == null){
// do nothing
} else {
mainVideo.pause();
}
break;
case ".flv":
mainVideo.source = mySelectedItem.url;
mainImage.visible = false;
mainVideo.visible = true;
mainVideo.play();
_channel.stop();
break;
case ".avi":
mainVideo.source = mySelectedItem.url;
mainImage.visible = false;
mainVideo.visible = true;
mainVideo.play();
_channel.stop();
break;
case ".mov":
mainVideo.source = mySelectedItem.url;
mainImage.visible = false;
mainVideo.visible = true;
mainVideo.play();
_channel.stop();
break;
}
}
public function getWebDetails(e:Event):void{
switch (e.currentTarget.getRepeaterItem().type as String)
{
//mp3s
case "song":
var isPlaying:Boolean;
isPlaying = false;
if (!isPlaying){
_sound.load(new URLRequest(e.currentTarget.getRepeaterItem().url));
_channel = _sound.play();
isPlaying = true;
} else if (isPlaying == true) {
_channel.stop();
isPlaying = false;
}
if (mainVideo.source == null){
// do nothing
} else {
mainVideo.pause();
mainVideo.visible = false;
mainImage.visible = true;
}
break;
//images
case "image":
mainImage.source = e.currentTarget.getRepeaterItem().url;
mainVideo.visible = false;
mainImage.visible = true;
if (mainVideo.source == null){
// do nothing
} else {
mainVideo.stop();
}
break;
case "video":
mainVideo.source = e.currentTarget.getRepeaterItem().url;
mainImage.visible = false;
mainVideo.visible = true;
mainVideo.play();
break;
}
}
我尝试创建一个布尔值来控制播放音乐的时间,并确定它能够处理歌曲应该改变的事实,但我错了。
有什么想法吗?
感谢。
编辑:
我还应该提一下我使用当前代码得到的错误:
错误:错误#2037:以错误顺序调用的函数或早先的调用未成功。 在flash.media::Sound/_load() 在flash.media::Sound/load() at brightEyes_mediaPlayer / getWebDetails()[C:\ Users \ Graham \ Documents \ y02s01 \ AVIS317 - FLEX \ brightEyes \ src \ brightEyes_mediaPlayer.mxml:122] at brightEyes_mediaPlayer / ___ brightEyes_mediaPlayer_Image3_click()[C:\ Users \ Graham \ Documents \ y02s01 \ AVIS317 - FLEX \ brightEyes \ src \ brightEyes_mediaPlayer.mxml:187]
干杯
答案 0 :(得分:0)
你知道,如果这是一个与linux相关的问题,那你就得到一个RTFM作为答案。但相反,我只会将您重定向到this一小部分重要信息。然后给出以下建议:当遇到问题时,请先查看语言参考。