Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
AS 3.0

Полоса процесса проигрывания музыки

10.07.2013, 22:47. Показов 3817. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго здравия всем!

Пишу простой плеер.
Получает путь до файла через flashvars, создаёт канал как-то так
ActionScript 3
1
2
3
4
5
6
var channel:SoundChannel;
var soundFactory:Sound;
var trans:SoundTransform;
trans = new SoundTransform(1,0);
soundFactory = new Sound();
soundFactory.load(new URLRequest(songurl));
Далее полученный файл играем, останавливаем, меняем громкость, всё хорошо, всё написал, а вот, как придумать полосу показа прогресса проигрывания и текущее время проигрывания файла нигде не могу найти информацию. Буду благодарен за подсказку!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2013, 22:47
Ответы с готовыми решениями:

Прекращение проигрывания музыки и анимации
как сделать так чтобы при нажатии кнопок на телефоне (назад и свернуть) прекращалась и анимация и проигрывание...

Создание плеера для проигрывания музыки
Здравствуйте, я написала код по этому видео https://www.youtube.com/watch?v=QW0rImEFXUE&list=LL_06uTJte5R1z8FJ4S11Ehw&index=40&t=0s...

WMP.dll Событие завершения проигрывания музыки
Здравствуйте. Мне нужно выполнить некоторые действия после окончания прослушивания музыки. Какое событие за это отвечает и какие параметры...

27
 Аватар для moomot
9 / 9 / 6
Регистрация: 12.07.2013
Сообщений: 57
12.07.2013, 17:07
добрый день. Поделись, пожалуйста, как ты сделал звуковую полосу.
Длительность песни я делал через sound.duration
время проигрывания делал через
ActionScript 3
1
2
3
4
t = sound.getBytesTotal(); // получаем полный размер песни (в байтах)
    l = sound.getBytesLoaded(); // число загруженых байт
// в зависимости от размера части загруженого mp3 трека, меняем ширину mp3_load
    position.mp3_load._width = Math.round(l/t * position._width);
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
12.07.2013, 23:02  [ТС]
moomot, помогло очень твоё сообщение, только не понял вопроса. у тебя же всё сделано. или я не так понял вопрос?
0
 Аватар для moomot
9 / 9 / 6
Регистрация: 12.07.2013
Сообщений: 57
13.07.2013, 00:10
ну мне нужна сама регулировка громкости. Как её реализовать - не знаю. Напиши, пожалуйста, как её.
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
13.07.2013, 02:14  [ТС]
moomot, Единственное, я не понял про duration. Он мне на него ругается спасу нет, в мануале написано, что нужно использовать
ActionScript 3
1
sound.lenth
но эта строка мне всё время выдаёт 0 пока бьюсь с этим. Если кто подскажет, буду благодарен.

Добавлено через 2 минуты
Цитата Сообщение от moomot Посмотреть сообщение
ну мне нужна сама регулировка громкости. Как её реализовать - не знаю. Напиши, пожалуйста, как её.
А. С этим без проблем.
Я создал клип и назвал его volume_Bar в нём создал ползунок volume_track ширина volume_Bar 50 пикселей. Дальше просто:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
volume_Bar.volume_track.addEventListener(MouseEvent.MOUSE_DOWN, startMascotDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);
volume_Bar.volume_track.addEventListener(Event.ENTER_FRAME, dragMascot);
var clickOffset:Point = null;
function startMascotDrag(event:MouseEvent)
{
    clickOffset = new Point(event.localX,event.localY);
}
function stopMascotDrag(event:MouseEvent)
{
    clickOffset = null;
}
function dragMascot(event:Event)
{
    if (clickOffset != null)
    {
        volume_Bar.volume_track.x = mouseX - 300;
        if (volume_Bar.volume_track.x < 0)
        {
            volume_Bar.volume_track.x = 0;
        }
        if (volume_Bar.volume_track.x > 50)
        {
            volume_Bar.volume_track.x = 50;
        }
        trans.volume = (volume_Bar.volume_track.x*2)/100;
        channel.soundTransform = trans;
        ExternalInterface.call("setVolume", trans.volume);
    }
}
trans здесь это переменная типа SoundTransform, отвечающая в данном случае за громкость, так же можно регулировать и баланс.

ActionScript 3
1
volume_Bar.volume_track.x = mouseX - 300;
Здесь я отнимаю 300 пикселей, потому как volume_bar имеет координаты по иксу 300.
0
 Аватар для moomot
9 / 9 / 6
Регистрация: 12.07.2013
Сообщений: 57
13.07.2013, 02:23
Спасибо конечно! А ты не сможешь сделать это actionscript 2.0?
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
13.07.2013, 02:48  [ТС]
moomot, а... вот в чём и подвох. Я в AS2 очень многого не помню уже, честно признаться, так что не смогу помочь...
Давно вообще за флеш не брался, решить начать с нуля именно AS3, и вот тут первые же грабли...


Товарищи, кто подскажет, почему Sound.lenth выдаёт 0 постоянно?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
13.07.2013, 03:03
Цитата Сообщение от NapalmRain Посмотреть сообщение
почему Sound.lenth выдаёт 0 постоянно?
Разве постоянно? Вроде после события должно выдавать более корректную информацию. Да и вообще, смотрим примеры.
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
13.07.2013, 03:24  [ТС]
TanaTiX, я поступил чрезвычайно просто, скопипастил код с хелпа, а именно
ActionScript 3
1
2
3
4
5
var estimatedLength:int =  
        Math.ceil(soundFactory.length / (soundFactory.bytesLoaded / soundFactory.bytesTotal)); 
    var playbackPercent:uint =  
        Math.round(100 * (channel.position / estimatedLength));
    d_time.text = String(playbackPercent);
и так же
ActionScript 3
1
d_time.text = String(estimatedLength);
и у меня в обоих случаях на экране дёргается ноль...

Добавлено через 17 минут
Ах, да. Это тело функции вызываемой при каждом новом кадре
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
13.07.2013, 03:32
NapalmRain, а попробовать скопировать не часть, а весь код?
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
13.07.2013, 11:58  [ТС]
TanaTiX, так и сделано, разве что добавлены модификации считывание нескольких переменных из вне.

Добавлено через 27 минут
Попробовал определять длину по событию complete, нооно срабатывает вовсе не когда весь файл загружен, а когда он доиграл. так же как и sound_COMPLETE
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
13.07.2013, 12:43
ActionScript 3
1
2
3
4
5
6
7
_snd = new Sound(new URLRequest("music.mp3"));
            _snd.addEventListener(Event.ACTIVATE, onActive);
            _snd.addEventListener(Event.OPEN, onOpen);
            _snd.addEventListener(SampleDataEvent.SAMPLE_DATA, onData);
            _snd.addEventListener(ProgressEvent.PROGRESS, onProgress);
            _snd.addEventListener(Event.COMPLETE, onComplete);
            _ch = _snd.play(0, int.MAX_VALUE);
и далее
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private function onActive(e:Event):void 
        {
            trace("on active");
        }
        
        private function onOpen(e:Event):void 
        {
            trace("on open");
        }
        
        private function onData(e:SampleDataEvent):void 
        {
            trace("on data");
        }
        
        private function onProgress(e:ProgressEvent):void 
        {
            trace("progress");
        }
        
        private function onComplete(e:Event):void 
        {
            trace("complete");
        }
        
        private function update(e:Event):void 
        {
            trace(_snd.length);
            if (_snd.length > 0) {
                removeEventListener(Event.ENTER_FRAME, update);
            }
        }
В трэйсе получаем
on active
on active
0
on open
progress
progress
progress
****
progress
complete
250305.306122449
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
19.07.2013, 01:44  [ТС]
TanaTiX, Полностью скопировал Ваш код в новый проект и получил следующее:
on active
on open
progress
progress
***
progress
progress
progress
progress
complete
Собственно, и всё...
Нет данных.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
19.07.2013, 04:39
NapalmRain, если при этом нет никаких ошибок и звук корректно воспроизводится, скорее всего не так скопировал.
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
19.07.2013, 08:46  [ТС]
TanaTiX, может быть это покажется слишком наглым с моей стороны, но не могли бы вы мне скинуть вар работающий проект?
Ну или, может, я скину свой и вы посмотрите, что же всё таки не так...
У меня просто кончились идеи...
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
19.07.2013, 16:57
Вот пример. Только mp3-файл вставить нужно.
Вложения
Тип файла: rar test.rar (4.0 Кб, 15 просмотров)
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.07.2013, 14:30  [ТС]
TanaTiX, я ничего не понимаю. А может быть проблема в том, что я описываю свой код не в отдельном классе, а просто в кадре?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
20.07.2013, 15:14
NapalmRain, код нужно писать в классах. Про событие ENTER_FRAME не забыл (оставлено для наглядности, и, собственно там и выводится продолжительность звука; ее, продолжительность, как я уже писал выше, можно определить по событию COMPLETE)?
0
 Аватар для NapalmRain
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
20.07.2013, 19:07  [ТС]
TanaTiX, Хорошо, спасибо, попробую вынести весь код в класс, только мне нужен совет.
Я подгружаю переменные в проект с помощью
ActionScript 3
1
 this.loaderInfo.parameters
А что мне писать вместо this внутри класса?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
20.07.2013, 19:46
loaderInfo - свойство DisplayObject. Соответственно использовать можно, например, в документ-классе (обычно Main)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2013, 19:46
Помогаю со студенческими работами здесь

Проверка проигрывания музыки через bass в другом приложении
Здравствуйте. К слову весь вопрос. Как проверить проигрывает ли музыку через bass другое приложение? Дело в том хочу вынести методы...

Нужно несколько функций для проигрывания AY-8910(12) музыки
Буду использовать Ваши функции из проекта, основанного на WinAPI и написанного на C++. Поэтому функции должны быть в DLL-библиотеке либо...

Нужен DLNA client на сервер для проигрывания музыки
Привет всем! У меня установлен Ubuntu server на отдельной машине в сетке, без монитора и др. На нем установлен звук, LIRC и VLC, чтобы...

Как сделать так чтобы после проигрывания музыки, отобразилась кнопка?
Пишу такую часть код: if (TrackBar1-&gt;Max==MediaPlayer1-&gt;Length) { BitBtn1-&gt;Visible=True; } а она после того как музыка спела,...

Завершение процесса при обнаружении другого процесса на .bat или .vbs
Будет всегда висеть в системе не закрываясь и смотреть при открытии даже одной из этих программ notepad.exe aimp.exe tc.exe будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru