Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с mp3 плееров (http://www.flasher.ru/forum/showthread.php?t=145568)

Life_Master 12.10.2010 18:41

Проблема с mp3 плееров
 
Сделал mp3 плеер по примеру. При компиляции Output выдает ошибку:
Код:

Error #2044: Необработанный IOErrorEvent:. text=Error #2032: Ошибка потока.
        at player_fla::MainTimeline/frame3()
        at flash.display::MovieClip/gotoAndStop()
        at player_fla::MainTimeline/XMLloaded()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at flash.net::URLLoader/onComplete()
Error #2044: Необработанный IOErrorEvent:. text=Error #2032: Ошибка потока.
        at player_fla::MainTimeline/frame3()

вот скрипты по кадрам:

1 кадр
Код AS3:

import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
 
stop();
 
var trackToPlay:String;
var pausePosition:int = 0;
var songURL:URLRequest;
var i:uint;
var myXML:XML = new XML();
var XML_URL:String = "xml/music.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
 
myLoader.addEventListener("complete", XMLloaded);
 
function XMLloaded(e:Event):void
{
        myXML = XML(myLoader.data);
 
        var firstSong:String = myXML.Song.songTitle[0];
        var firstArtist:String = myXML.Song.songArtist[0];
 
        songURL = new URLRequest("music/" + firstSong + ".mp3");
        title_txt.text = "1."+firstArtist+" - "+firstSong;
 
        for each (var Song:XML in myXML..Song)
        {
                i++;
                var songTitle:String = Song.songTitle.toString();
                var songArtist:String = Song.songArtist.toString();
 
                playlist.lists.addItem({label:i+"."+songArtist+"-"+songTitle, songString:songTitle,Artist:songArtist, songNum:i});
        }
 
        var myArray = new Array(0,0);
        playlist.lists.selectedIndices = myArray;
        gotoAndStop(3);
 
}

2 кадр
Код AS3:

import flash.net.URLRequest;
 
songURL = new URLRequest("music/"+trackToPlay+".mp3");

3 кадр
Код AS3:

import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundLoaderContext;
import flash.events.Event;
import flash.events.MouseEvent;
 
stop();
var snd:Sound = new Sound();
var channel:SoundChannel;
var context:SoundLoaderContext = new SoundLoaderContext(5000,true);
snd.load(songURL, context);
channel = snd.play(pausePosition);
playlist.lists.addEventListener(Event.CHANGE, itemClick);
function itemClick(e:Event):void
{
        channel.stop();
        title_txt.text = e.target.selectedItem.label;
        trackToPlay = e.target.selectedItem.songString;
        gotoAndPlay(2);
}
 
channel.addEventListener(Event.SOUND_COMPLETE, new_music);
function new_music(e:Event):void
{
        newTrack();
}
 
music_btn.stop_btn.addEventListener(MouseEvent.CLICK, stop_music);
function stop_music(e:Event):void
{
        channel.stop();
}
 
function newTrack():void
{
        if (playlist.lists.selectedItem.songNum == i)
        {
                channel.stop();
                var selectFirst = new Array(0,0);
                playlist.lists.selectedIndices = selectFirst;
                playlist.lists.scrollToIndex(0);
                trackToPlay = playlist.lists.selectedItem.songString;
                gotoAndPlay(2);
        }
        else
        {
                channel.stop();
                var sn:uint = playlist.lists.selectedItem.songNum;
                var selectNext = new Array(sn,sn);
                playlist.lists.selectedIndices = selectNext;
                playlist.lists.scrollToIndex(0);
                trackToPlay = playlist.lists.selectedItem.songString;
                gotoAndPlay(2);
        }
        pausePosition = 0;
}

не догоняю в чем проблема - музыка не проигрывается...

leofit 12.10.2010 18:48

Код AS3:

songURL = new URLRequest("music/"+trackToPlay+".mp3");

1. А где лоадер? Вы не качаете музыку, а просто инициализируете ссылку на файл
2. Откуда могла бы быть гарантия, что музыка успела скачаться между вторым и третьим кадром?

Life_Master 12.10.2010 19:04

добавил
Код AS3:

songURL = new URLRequest("music/"+trackToPlay+".mp3");
songLoader = new URLLoader(songURL);

и сразу ушел в аут с той же ошибкой аутпута

leofit 12.10.2010 19:19

Сорри, не увидел в Вашем коде
Код AS3:

snd.load(songURL, context);

сейчас внимательнее посмотрю

Добавлено через 22 минуты
В общем у себя воспроизвел, работает без сбоев, вот ко моего третьего кадра

Код AS3:

 
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundLoaderContext;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
 
var snd:Sound = new Sound();
var channel:SoundChannel;
var context:SoundLoaderContext = new SoundLoaderContext(5000,true);
snd.load(new URLRequest("/music/1.mp3"), context);
snd.addEventListener(Event.COMPLETE, completeListener);
snd.addEventListener(ProgressEvent.PROGRESS, progressHandler);
 
function completeListener(event:Event) {
        channel = snd.play();       
}
 
function progressHandler(event:ProgressEvent) {
            var loadTime:Number = event.bytesLoaded / event.bytesTotal;
            var LoadPercent:uint = Math.round(100 * loadTime);
 
            trace(        "Sound file's size in bytes: " + event.bytesTotal + "\n"
                                + "Bytes being loaded: " + event.bytesLoaded + "\n"
                                + "Percentage of sound file that is loaded " + LoadPercent + "%.\n"
                                );
 
        }
 
 
stop();

Проверяйте пути к файлам, самое очевидное это сделать

Код AS3:

trace("music/"+trackToPlay+".mp3");

в третьем кадре

Life_Master 12.10.2010 19:58

вы правы - trace показал только названия музыки, без исполнителя... значит будем бодаться... спс))


Часовой пояс GMT +4, время: 01:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.