Проблема с несколькими песнями в Flex - AS3 - PullRequest
0 голосов
/ 21 декабря 2009

Я пытаюсь создать приложение 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]

Приветствия

1 Ответ

0 голосов
/ 21 декабря 2009

Знаете, если бы это был вопрос, связанный с Linux, вы бы получили RTFM в качестве ответа. Но вместо этого я просто перенаправлю вас на этот маленький кусочек важной информации. А затем дайте вам следующий совет: всегда обращайтесь сначала к справочнику по языку при возникновении проблем.

...