Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вопрос о file referens (http://www.flasher.ru/forum/showthread.php?t=149779)

Evan33 31.01.2011 15:29

вопрос о file referens
 
Помогите разобраться, я только начинаю изучать все это дело))
ситуация такая я взял образец простого плеера звука, но он загружал звук только из интернета, а я хочу чтоб можно было открыть какой либо файл из системы, я удалил ссылку и создал новый объект file reference
Код AS3:

var fs:FileReference = new FileReference();
var soundFilter:FileFilter = new FileFilter("Музяка)", "*.mp3;");
fs.browse(new Array(soundFilter));

далее я так понимаю надо чтоб мой файл загрузился в объект sound
Код AS3:

var theSound:Sound = new Sound();

а что дальше написать я не знаю, там было
Код AS3:

theSound.load(\адрес\);

а как сделать так, чтоб звук загрузился из файла??

p.s. а надо обязательно писать
Код AS3:

import flash.media.Sound;
import flash.net.FileReference;

в начале кода?

in4core 31.01.2011 20:49

По порядку с конца. Импорты писать обязательно иначе классы будут не зарегистрированы и получшиь ошибку.
Код AS3:

theSound.load(byteArray)

что то типа того.
Идея такая после загрузки файла нужно перевести его в байткод, и читать байткод уже через лоад метод. Яб так делал

mooncar 31.01.2011 21:06

Извините. А в AS3 класс FileReference может передать ссылку на выбранный файл? Любопытно, просто в AS2 ведь это невозможно, потому сперва файл на сервер всегда передавали, а потом его назад подгружали во флешку в таких случаях.

gloomyBrain 31.01.2011 21:28

Цитата:

Код AS3:

theSound.load(byteArray)

что то типа того.
Что-то типа бреда.

Цитата:

FileReference может передать ссылку на выбранный файл?
Можно только напрямую загрузить выбранный пользователем файл как массив байтов.

Что касается звука - пока есть только один способ проигрывать его локально - это на лету собрать swf с зашитым в него mp3-файлом (тем, что выбрал пользователь) и потом оттуда этот звук инстанциировать как наследник класса Sound. Гугл в помошь, сам такую штуку видел

Evan33 31.01.2011 22:18

Цитата:

Что касается звука - пока есть только один способ проигрывать его локально - это на лету собрать swf с зашитым в него mp3-файлом (тем, что выбрал пользователь) и потом оттуда этот звук инстанциировать как наследник класса Sound. Гугл в помошь, сам такую штуку видел
Что-то как-то сложно получается...
Ладно, а по какому запросу поискать?

Цитата:

Идея такая после загрузки файла нужно перевести его в байткод, и читать байткод уже через лоад метод. Яб так делал
И как в таком случае перевести в байт код?

in4core 31.01.2011 22:52

Цитата:

И как в таком случае перевести в байт код?
Через сохранение на сервер

gloomyBrain 31.01.2011 22:59

Для начала - у mp3 файла нет байт кода, а есть фреймы. По сему нужно эти фреймы распарсить и перевести в формат несжатого звука (аналог Sound#extract()), что есть равносильно написанию своего кодека. Как это сделать? Либо купить спецификацию формата mp3, либо долго и нудно изучать исходники открытых кодеков Lame (C/C++). Однако, учитывая скорость работы виртуальной машины (AVM2), результат вряд ли Вас удовлетворит.
По этому, как бы странно это ни звучало, самый простой и быстрый способ (это правда почти не заметно по нагрузке) - это приведенный мной выше.

Цитата:

Ладно, а по какому запросу поискать?
Можно поискать по форуму

Evan33 01.02.2011 00:51

Цитата:

Через сохранение на сервер
имеется в виду что такой возможности нет...
Цитата:

Можно поискать по форуму
я имел в виду какое ключевое слово я должен задать поисковику

В общем то я решил проблему при том довольно просто
Код AS3:

        fs.browse(new Array(soundFilter));
fs.addEventListener(Event.SELECT, ld);
function ld(evt:Event):void
    {
        trace(fs.name);
        req = new URLRequest(fs.name);
        trace(req.url);
        theSound.load(req);
        }

Таким образом получается что file ref не грузит звук а грузит его сам sound, но появилась одна проблема: чтоб звук был загружен он должен находиться в той-же папке что и флешка, пока мне этого достаточно. Однако если что gloomyBrain вы мне поможете? просто с английским не очень, да и как уже говорил я новичок...

p.s. я закомментировал все import никаких ошибок не было все работало.
и после
Код AS3:

function ld(evt:Event):void

что обозначают эти evt, event, voud (я просто взял их из примера так и не понял что они значат) я так понимаю что второе это описание что за событие третье это идентификатор пустой функции?

Evan33 06.02.2011 18:21

мда, все уснули)

tsarapkabel 06.02.2011 18:48

Это значит что в функцию ld передаётся параметр с именем "evt", тип параметра - Event, void говорит о том, что функция не возвращает никакого значения. Вообще это азы...


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

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