Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.05.2009, 16:21
cdc7600 вне форума Посмотреть профиль Отправить личное сообщение для cdc7600 Найти все сообщения от cdc7600
  № 1  
Ответить с цитированием
cdc7600
 
Аватар для cdc7600

Регистрация: Dec 2008
Адрес: Севастополь
Сообщений: 112
Отправить сообщение для cdc7600 с помощью ICQ
По умолчанию Измение уровня звука при переходе в любую другую часть трека

Проблеммка когда перехожу на любую точку трека "дёргается" уровень звука, не могу понять сфигали ((
может кто-то сталкивался..
тут это чудо: http://www.sevstar.net/player/mp3_player.html

код :
Код AS3:
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

Старый 22.05.2009, 16:51
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
вероятная причина в том что у SoundChannel.soundTransform нельзя поменять volume, pan, и т.д. напрямую, а только присвоив soundTransform с нужными параметрами
например вместо
Код AS1/AS2:
ch.soundTransform.volume = 0.5;
должно быть
Код AS3:
ch.soundTransform = new SoundTransform(0.5);
а ты вроде бы пытаешься править SoundMixer.soundTransform напрямую
в общей куче трудно что-то понять, нужен пример непонятки в чистом виде, типа взял и потестил..

Старый 22.05.2009, 17:36
cdc7600 вне форума Посмотреть профиль Отправить личное сообщение для cdc7600 Найти все сообщения от cdc7600
  № 3  
Ответить с цитированием
cdc7600
 
Аватар для cdc7600

Регистрация: Dec 2008
Адрес: Севастополь
Сообщений: 112
Отправить сообщение для cdc7600 с помощью ICQ
помогло везде заменить изменение громкости с помощью SoundMixer.soundTransform
)
__________________
cdc7600.livejournal.com

Старый 22.05.2009, 19:14
Deidara вне форума Посмотреть профиль Отправить личное сообщение для Deidara Найти все сообщения от Deidara
  № 4  
Ответить с цитированием
Deidara

Регистрация: May 2009
Сообщений: 80
На самом деле это и вправду странная проблема. К примеру если менять звук так:
Код AS3:
 _soundTransform = new SoundTransform;
channel.SoundTransform =  _soundTransform(volume, ...);
То если делать это не каждый фрейм, при громкости равной нулю воспроизведение останавливается

Если задавать переменную типа SoundTransform на верхнем уровне класса и присваивать в неё переменные объявленные там же:
Код AS3:
_soundTransform = new SoundTransform;
vol:Number = new Number;
channel.SoundTransform =  _soundTransform(vol, ...);
То переменную vol он просто не увидет, пока писал веб плеер с визуализатором звука, много таких неясностей нашёл, но внимания не заострял


Последний раз редактировалось Deidara; 22.05.2009 в 19:21.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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