![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Проблеммка
когда перехожу на любую точку трека "дёргается" уровень звука, не могу понять сфигали ((может кто-то сталкивался.. тут это чудо: http://www.sevstar.net/player/mp3_player.html код : package { import flash.media.SoundMixer; import flash.events.Event; import flash.display.MovieClip; import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; import flash.events.MouseEvent; import flash.text.TextField; import flash.utils.ByteArray; import flash.display.Loader; import flash.display.LoaderInfo; import fl.transitions.Tween; import fl.transitions.easing.*; import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.events.IOErrorEvent; public class StartPlayingMP3 extends Sprite { private var _sound:Sound = new Sound; private var _soundChannel:SoundChannel = new SoundChannel; public var url:String = stage.loaderInfo.parameters.soundFile; public var _soundTitle:String = stage.loaderInfo.parameters.soundTitle; public var _soundArtist:String = stage.loaderInfo.parameters.soundArtist; public var request_sound: URLRequest = new URLRequest(url); public var soundTrans: SoundTransform = SoundMixer.soundTransform; public var _playing: Number = 0; var resume_time: Number = 0; public var Volume_saver: Number; public var Volume_position: Number; public var Volume_const: Number = 0.25; public var flag: Number = 1; public var flag2: Number = 1; public var myLoader:Loader = new Loader(); public function StartPlayingMP3():void { var Artist:String; var SongName:String; stage.showDefaultContextMenu = false; stage.scaleMode = flash.display.StageScaleMode.NO_SCALE, stage.align = flash.display.StageAlign.TOP_LEFT; volume_mc.y = -20.9; _text.Timer_field1.y = -20; _text.Timer_field2.y = -20; _text.Name_field1.selectable = false; _text.Name_field2.selectable = false; _text.Timer_field1.selectable = false; _text.Timer_field2.selectable = false; _text.Name_field1.text = url ? url : "corructed" _text.Name_field2.text = url ? url : "corructed" Artist=convert(_soundArtist); SongName=convert(_soundTitle); _text.Name_field1.text = Artist+" "+"-"+" "+SongName; _text.Name_field2.text = Artist+" "+"-"+" "+SongName; // проверяем существование файла _sound.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); play_bt.addEventListener(MouseEvent.CLICK, onClickPlay); _text.maska.scaleX = 0; status_musik_bar.scaleX = 0; progress_bar.scaleX = 0; play_bt.visible = true; ramka_play.visible = false; ramka_loaded.visible = true; pause_bt.visible = false; volume_mc.vol_mute.visible=0; setVolume(); Volume_saver = 0.25; navigator.addEventListener(MouseEvent.CLICK, goAndPlay); addEventListener(Event.ENTER_FRAME,onEnterFrame); } public function ioErrorHandler(event:IOErrorEvent):void { play_bt.removeEventListener(MouseEvent.CLICK, onClickPlay); navigator.removeEventListener(MouseEvent.CLICK, goAndPlay); removeEventListener(Event.ENTER_FRAME,onEnterFrame); pause_bt.removeEventListener(MouseEvent.CLICK, onClickPause); volume_mc.removeEventListener(MouseEvent.CLICK, changeVolume); _text.Name_field1.text = "File corrupted or not found"; _text.Name_field2.text = "File corrupted or not found"; volume_mc.visible = false; _text.Timer_field1.visible = false; _text.Timer_field2.visible = false; } public function onClickPlay(event:MouseEvent):void { if (flag2==1){ var show_volume:Tween = new Tween(volume_mc,"y",Regular.easeInOut,-20.9,0.1,1,true); var show_time1:Tween = new Tween(_text.Timer_field1,"y",Regular.easeInOut,-20,0.0,1,true); var show_time2:Tween = new Tween(_text.Timer_field2,"y",Regular.easeInOut,-20,0.0,1,true); volume_mc.x = 548.9; _sound.load(request_sound); } flag2 = 0; SoundMixer.stopAll(); soundTrans.volume = Volume_saver; pause_bt.addEventListener(MouseEvent.CLICK, onClickPause); volume_mc.addEventListener(MouseEvent.CLICK, changeVolume); _soundChannel = _sound.play(resume_time); if (Volume_saver==0) {volume_mc.vol_mute.visible=1;} else {volume_mc.vol_mute.visible=0;} play_bt.visible = false; pause_bt.visible = true; _playing = 1; if (flag==1) {volume_mc.vol_mask_mc.x = Volume_const*volume_mc.width;} soundTrans.volume = Volume_saver; _soundChannel.soundTransform=soundTrans; } public function onClickPause(event:MouseEvent):void { pause_bt.visible = false; play_bt.visible = true; resume_time = _soundChannel.position; _soundChannel.stop(); _playing = 0; flag=0; } public function onEnterFrame(event:Event):void { soundTrans.volume = Volume_saver; _soundChannel.soundTransform=soundTrans; progress_bar.scaleX = Math.round((_soundChannel.position/_sound.length)*10000)*0.0001; status_musik_bar.scaleX = Math.round((_sound.bytesLoaded/_sound.bytesTotal)*10000)*0.0001; _text.maska.scaleX = Math.round((_soundChannel.position/_sound.length)*10000)*0.0001; _soundChannel.addEventListener(Event.SOUND_COMPLETE, onComplete); TimeControl(); if (_soundChannel.position == _sound.length) { status_musik_bar.scaleX = 0; progress_bar.scaleX = 0; _text.maska.scaleX = 0; } } public function onComplete(event:Event):void { status_musik_bar.scaleX = 0; progress_bar.scaleX = 0; _text.maska.scaleX = 0; play_bt.visible = true; ramka_play.visible = false; ramka_loaded.visible = true; pause_bt.visible = false; resume_time = 0; } // конвертация в правильную кодировку public function convert(data:String):String { var b:ByteArray = new ByteArray(); for (var i:uint = 0; i<data.length; i++) { b[ i ] = data.charCodeAt( i ); } return b.readMultiByte(b.bytesAvailable,'win-1251'); } public function goAndPlay(event:MouseEvent):void { // 522 ширина полосы проигрывания var p:int = _sound.length * event.currentTarget.mouseX / 522; if (Volume_saver==0) {volume_mc.vol_mute.visible=1;} else {volume_mc.vol_mute.visible=0;} _soundChannel.stop(); _soundChannel = _sound.play(p); soundTrans.volume = Volume_saver; if (_playing == 1) { play_bt.visible = false; pause_bt.visible = true; } else { resume_time = _soundChannel.position; _soundChannel.stop(); play_bt.visible = true; pause_bt.visible = false; } } public function changeVolume(event:MouseEvent):void { soundTrans.volume = event.currentTarget.mouseX/48 ; Volume_saver = soundTrans.volume; _soundChannel.soundTransform=soundTrans; volume_mc.vol_mask_mc.x = event.currentTarget.mouseX; Volume_position = volume_mc.vol_mask_mc.x; } public function TimeControl():void { var timeMinutes:String = String(Math.floor(_soundChannel.position / 59500)); var timeSeconds:String = String(Math.round(_soundChannel.position / 1000) % 60); if (timeSeconds.length == 1) { timeSeconds = "0" + timeSeconds; } _text.Timer_field1.text = timeMinutes + ":" + timeSeconds; _text.Timer_field2.text = timeMinutes + ":" + timeSeconds; } public function setVolume():void{ var Volume:int = 0.25; soundTrans.volume = Volume; } } }
__________________
cdc7600.livejournal.com |
|
|||||
|
вероятная причина в том что у SoundChannel.soundTransform нельзя поменять volume, pan, и т.д. напрямую, а только присвоив soundTransform с нужными параметрами
например вместо должно быть а ты вроде бы пытаешься править SoundMixer.soundTransform напрямую в общей куче трудно что-то понять, нужен пример непонятки в чистом виде, типа взял и потестил.. |
|
|||||
|
помогло везде заменить изменение громкости с помощью SoundMixer.soundTransform
)
__________________
cdc7600.livejournal.com |
|
|||||
|
Регистрация: May 2009
Сообщений: 80
|
На самом деле это и вправду странная проблема. К примеру если менять звук так:
_soundTransform = new SoundTransform; channel.SoundTransform = _soundTransform(volume, ...); Если задавать переменную типа SoundTransform на верхнем уровне класса и присваивать в неё переменные объявленные там же: То переменную vol он просто не увидет, пока писал веб плеер с визуализатором звука, много таких неясностей нашёл, но внимания не заострял Последний раз редактировалось Deidara; 22.05.2009 в 19:21. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|