Я пытаюсь создать приложение 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;
}
}
Я попытался создать логическое значение для управления воспроизведением музыки, полагая, что он сможет справиться с тем, что песня должна измениться, но я ошибся в этом.
Есть идеи?
Спасибо.
EDIT:
Я должен также упомянуть ошибку, которую я получаю с текущим кодом:
Ошибка: ошибка № 2037: функции, вызванные в неправильной последовательности, или предыдущий вызов был неудачным.
на flash.media::Sound/_load ()
на flash.media::Sound/load ()
at brightEyes_mediaPlayer / getWebDetails () [C: \ Users \ Грэм \ 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]
Приветствия