Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

La classe Sound - fenomenale

This is a discussion on La classe Sound - fenomenale within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Voglio concedermi un aggettivo non proprio educato per definire la nuova classe Sound di Actionscript 3.0 : una figata! Sostanzialmente è ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 19-09-07, 13:47
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
La classe Sound - fenomenale

Voglio concedermi un aggettivo non proprio educato per definire la nuova classe Sound di Actionscript 3.0 :
una figata!

Sostanzialmente è rimasta la stessa ma adesso con il supporto della classe Socket si possono fare delle cose davvero belle.
Ad esempio si possono creare dei veri e propri sound mixers e appoggiandoci delle buone grafiche i risultati sono eccezionali ( non è il mio caso in quanto son un pessimo grafico ).
Con questo esempio voglio focalizzarmi soprattutto sulla classe SoundMixer ed il suo metodo computeSpectrum, affiancandogli la nuova classe ByteArray che gestisce blocchi di dati binari.

Ecco il risultato:


Le classi che ho scritto e utilizzato per il mio audio player sono 4:
- FlepPlayer.as
- Grafico.as
- ControlloVolume.as
- Balance.as









Allego i files sorgente:
Attached Files
File Type: zip audio_player.zip (51.6 KB, 31 views)

__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !

Last edited by Flep; 04-06-08 at 23:58..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 09-11-07, 02:27
Member
 
Join Date: Oct 2007
Posts: 85
Rep Power: 2
cucamod is on a distinguished road
Re: La classe Sound - fenomenale

se volessi aggiungere la funzione di cambio traccia successiva?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 09-11-07, 07:01
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Re: La classe Sound - fenomenale

Cosa significa traccia successiva ?
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 14-11-07, 17:35
StefanoV's Avatar
Programmer
 
Join Date: Jan 1970
Location: Crotone
Posts: 12
Rep Power: 0
StefanoV is on a distinguished road
Send a message via MSN to StefanoV
Riferimento: La classe Sound - fenomenale

Come Potrei Cambiare il Codice per Visualizzare lo Spettro Audio a Barre Verticali?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 14-11-07, 17:45
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Re: La classe Sound - fenomenale

Ciao

In Grafico.as, dopo addChild(bitmap); puoi fare così:
bitmap.rotation=90;

poi ti sistemi le coordinate x e y della bitmap stessa...
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 13-05-08, 12:28
Junior Member
 
Join Date: May 2008
Posts: 3
Rep Power: 0
ldf1311 is on a distinguished road
Re: La classe Sound - fenomenale

Molto carino e facilmente configurabile graficamente. Mi sto affacciando adesso all'actionscript e quindi anche se può essere banale, la mia domanda è:
cosa devo modificare per mandare il loop il pezzo musicale? ovvero fare in modo che quando termina inizi nuovamente in automatico.

complimenti ancora

Luciano
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 14-05-08, 22:03
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Re: La classe Sound - fenomenale

Prova a sostituire il codice di FlepPlayer.as con questo:
Code:
/*
 *************************************************************************************************************
 * http://www.FlepStudio.com                                                                                 *
 * @ Author: Filippo Lughi                                                                                   *
 * @ version 1.0                                                                                             *
 *************************************************************************************************************
 */
package
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.net.URLRequest;
    import flash.text.TextFormat;
    import flash.utils.Timer;
	
	public class FlepPlayer extends MovieClip
	{
		// Ricordarsi di cambiare l'url o altrimenti non funzionerà perchè avviene un 'domain crossing'
		private var url:String='http://www.flepstudio.org/music/HellsBells.mp3';
		private var _channel:SoundChannel;
        private var _displayText:TextField;
        private var _sound:Sound;
        private var _playing:Boolean=false;
        private var _playPauseButton:Sprite;
        private var _position:int=0;
		private var barStartWidth:int=230;
		private var _balanceControl:Balance;
        private var _grafico:Grafico;
        private var _volumeControl:ControlloVolume;
		
		public function FlepPlayer()
		{
			initMe();
			initButtonsEvents();
			initSound();
			initTimer();
			initGrafico();
			initControlloVolume();
			initControlloBalance();
		}
		
		public function initMe():void
		{
			player_mc.play_mc.over_mc.visible=false;
			player_mc.stop_mc.over_mc.visible=false;
			player_mc.pause_mc.over_mc.visible=false;
			bar_mc.position_mc.width=1;
		}
		
		public function initButtonsEvents():void
		{
			player_mc.play_mc.addEventListener(MouseEvent.MOUSE_OVER,colorPlayOver);
			player_mc.play_mc.addEventListener(MouseEvent.MOUSE_OUT,colorPlayOut);
			player_mc.stop_mc.addEventListener(MouseEvent.MOUSE_OVER,colorStopOver);
			player_mc.stop_mc.addEventListener(MouseEvent.MOUSE_OUT,colorStopOut);
			player_mc.pause_mc.addEventListener(MouseEvent.MOUSE_OVER,colorPauseOver);
			player_mc.pause_mc.addEventListener(MouseEvent.MOUSE_OUT,colorPauseOut);
			
			player_mc.play_mc.addEventListener(MouseEvent.MOUSE_UP,onPlay);
			player_mc.pause_mc.addEventListener(MouseEvent.MOUSE_UP,onPause);
			player_mc.stop_mc.addEventListener(MouseEvent.MOUSE_UP,onStop);
		}
		
		public function colorPlayOver(event:Event):void
		{
			player_mc.play_mc.out_mc.visible=false;
			player_mc.play_mc.over_mc.visible=true;
		}
		public function colorPlayOut(event:Event):void
		{
			player_mc.play_mc.out_mc.visible=true;
			player_mc.play_mc.over_mc.visible=false;
		}
		public function colorStopOver(event:Event):void
		{
			player_mc.stop_mc.out_mc.visible=false;
			player_mc.stop_mc.over_mc.visible=true;
		}
		public function colorStopOut(event:Event):void
		{
			player_mc.stop_mc.out_mc.visible=true;
			player_mc.stop_mc.over_mc.visible=false;
		}
		public function colorPauseOver(event:Event):void
		{
			player_mc.pause_mc.out_mc.visible=false;
			player_mc.pause_mc.over_mc.visible=true;
		}
		public function colorPauseOut(event:Event):void
		{
			if(!player_mc.pause_mc.isPressed)
			{
				player_mc.pause_mc.out_mc.visible=true;
				player_mc.pause_mc.over_mc.visible=false;
			}
		}
		
		public function initTimer():void
		{
			var timer:Timer=new Timer(20);
			timer.addEventListener(TimerEvent.TIMER,onTimer);
            timer.start();
            _playing=true;
		}
		public function onTimer(event:TimerEvent):void
		{
			var loaded:int=_sound.bytesLoaded;
            var total:int=_sound.bytesTotal;
            var length:int=_sound.length;
            var position:int=_channel.position;
			
			if(total>0) 
			{
                var percentBuffered:Number=loaded/total;
				
                this.bar_mc.loading_mc.width=barStartWidth*percentBuffered;
                length/=percentBuffered;
                var percentPlayed:Number=position/length;
                this.bar_mc.position_mc.width=barStartWidth*percentPlayed;
                
               _grafico.update();
            }
		}
		
		public function initSound():void
		{
			_sound=new Sound(new URLRequest(url));
			_sound.addEventListener(Event.COMPLETE,finito);
            _channel=_sound.play();
		}
		
		public function initGrafico():void
		{
			_grafico=new Grafico();
			_grafico.x=61;
            _grafico.y=70;
            addChild(_grafico);
		}
		
		private function finito(evt:Event):void
		{
			_sound.removeEventListener(Event.COMPLETE,finito);
			initSound();
		}
		
		public function onPlay(event:MouseEvent):void
		{
			player_mc.pause_mc.isPressed=false;
			player_mc.pause_mc.out_mc.visible=true;
			player_mc.pause_mc.over_mc.visible=false;
			_channel.stop();
			_channel=_sound.play(_position);
			_playing=true;
			_sound.addEventListener(Event.COMPLETE,finito);
		}
		public function onPause(event:MouseEvent):void
        {
            if(_playing) 
			{
               	 _position=_channel.position;
				 _channel.stop();
				player_mc.pause_mc.isPressed=true;
				_sound.removeEventListener(Event.COMPLETE,finito);
            }
            else
			{
               	 _channel=_sound.play(_position);
				 player_mc.pause_mc.isPressed=false;
				 _sound.addEventListener(Event.COMPLETE,finito);
			}
            _playing=!_playing;
        }
		public function onStop(event:MouseEvent):void
		{
			player_mc.pause_mc.isPressed=false;
			player_mc.pause_mc.out_mc.visible=true;
			player_mc.pause_mc.over_mc.visible=false;
			_channel.stop();
			_position=0;
			_sound.removeEventListener(Event.COMPLETE,finito);
		}
		
		public function initControlloVolume():void
		{
			_volumeControl=new ControlloVolume();
            _volumeControl.x=60;
            _volumeControl.y=250;
            addChild(_volumeControl);
            _volumeControl.addEventListener(Event.CHANGE,onTransform);
		}
		public function initControlloBalance():void
		{
			_balanceControl=new Balance();
            _balanceControl.x=188;
            _balanceControl.y=250;
            addChild(_balanceControl);
            _balanceControl.addEventListener(Event.CHANGE,onTransform);
		}
		
		public function onTransform(event:Event):void
        {
            _channel.soundTransform=new SoundTransform(_volumeControl.volume,_balanceControl.pan);
        }
	}
}
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #8 (permalink)  
Old 14-05-08, 22:33
Junior Member
 
Join Date: May 2008
Posts: 3
Rep Power: 0
ldf1311 is on a distinguished road
Re: La classe Sound - fenomenale

Non funziona. E' come se ppiù suoni si accavallassero.

In FLASH CS3 quando eseguo il filmato mi spara fuori all'infinito il seguente errore

ypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.
at FlepPlayer/onTimer()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.
at FlepPlayer/onTimer()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.

Ti ringrazio in anticipo per il tempo che mi dedichi
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #9 (permalink)  
Old 14-05-08, 22:46
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,446
Rep Power: 6
Flep is on a distinguished road
Re: La classe Sound - fenomenale

Strano perchè se non hai modificato il codice originale non deve dare quell' errore.
Dificile dire da dove arriva quell' errore...
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #10 (permalink)  
Old 14-05-08, 23:42
Junior Member
 
Join Date: May 2008
Posts: 3
Rep Power: 0
ldf1311 is on a distinguished road
Re: La classe Sound - fenomenale

ho trovato un errore causato nel copia/incolla. Allora ho ripassato il codice riga per riga per verificare che sia esattamente come il tuo ma non funzia.

A parte l'effetto sul suono che ti dicevo, la barra di avanzamento non compare ed lo sfondo grigio della barra sembra quasi che vada a ritmo di musica.

Se vuoi ti mando il pacchettino. Ovviamente pubblico il tutto con i settaggioa FLASH 9 e AS3
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Flash CS3 video sound out totonino Actionscript 3.0 base 1 30-10-08 22:11
Actionscript 3 Streaming sound with AS3 and PHP g82 advanced Actionscript 3.0 1 15-10-08 04:43
loop sound... Fireantology Actionscript 3.0 base 0 07-02-08 10:33
Proprietà length della classe sound nextneed Actionscript 3.0 avanzato 4 23-01-08 08:53


All times are GMT. The time now is 15:37.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406