![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 61
|
Привет парни!
В обнимку с мануалом собираюсь сделать простенький визуализатор. import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; const HEIGHT:int = 100; const LENGTH:int = 256; var req:URLRequest = new URLRequest("music.mp3"); var snd:Sound = new Sound(req); var channel:SoundChannel; channel= snd.play(); addEventListener(Event.ENTER_FRAME, onEnterFrame); snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); var bytes:ByteArray = new ByteArray(); function onEnterFrame(event:Event):void { SoundMixer.computeSpectrum(bytes, true, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x000000); var n:Number = 0; for (var i:int = 0; i < LENGTH; i++) { n = (bytes.readFloat() * HEIGHT); g.beginFill(0xffff00); g.drawRect (i*32, HEIGHT-n, 32, HEIGHT) ; } } function onPlaybackComplete(event:Event) { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } Крутил третье значение у SoundMixer.computeSpectrum(bytes, true, 0), но так ничего путного и не получилось (надо, чтобы между колонками был один пиксель). Я так понял, чтобы уместить спектр в 512 пикселей, например, надо чтобы миксер просчитывал не каждое значение массива битов, а суммарное из 256/(8192/512)= 16 значений. Как это сделать, я не знаю. Тут ваш хэлп и требуется. Да, еще, с чем может быть связано то, что колонки "прыгают" дальше, чем надо? |
|
|||||
|
strange mood
|
computeSpectrum всегда возвращает 512 байт, это поменять нельзя. Но можно брать из выходного массива не всё, а скажем каждый 16й байт.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 61
|
Так тоже нормально. Спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|