This is a discussion on Come usare bottoni e suoni con Flash CS3 within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Anche il metodo attachSound di Actionscript 2.0 è stato rimosso.
Sostanzialmente lavorava come il metodo ' cugino ' attachMovie, cioè si assegnava ...
Anche il metodo attachSound di Actionscript 2.0 è stato rimosso.
Sostanzialmente lavorava come il metodo ' cugino ' attachMovie, cioè si assegnava un identificatore ad un file audio in libreria e con attachSound veniva ' attaccato ' allo stage in runtime e riprodotto.
Adesso per ' attaccare ' un sound e quindi riprodurlo necessitiamo di assegnare un classe come identificatore nel file audio in libreria.
Con quasto articolo vedremo come assegnare dei suoni ad un bottone.
Tengo a precisare che il metodo classico di aprira il bottone ed inserire un audio in ogni stato del bottone è ancora validissimo, ma dato che FlepStudio si occupa di programmazione Flash, mi sento in dovere di fare un esempio utilizzando solo Actionscript.
Vediamo l' esempio...
Creo un FLA che salvo con nome ' sounds.fla '.
Al suo interno istanzio sullo stage un bottone e gli assegno nome istanza ' bottone_btn '.
Importo 3 files audio in libreria, uno per l' evento over del mouse, uno per l' out ed uno per il click.
Creo la Document Class, un file AS che salvo con nome ' Main.as ', implementata in questo modo:
Code:
package
{
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
public function Main()
{
initListener();
}
private function initListener():void
{
bottone_btn.addEventListener(MouseEvent.MOUSE_OVER,isOver);
bottone_btn.addEventListener(MouseEvent.MOUSE_OUT,isOut);
bottone_btn.addEventListener(MouseEvent.CLICK,isClick);
}
private function isOver(m:MouseEvent):void
{
var sound_over:Over=new Over();
}
private function isOut(m:MouseEvent):void
{
var sound_out:Out=new Out();
}
private function isClick(m:MouseEvent):void
{
var sound_click:Click=new Click();
}
}
}
Ora creo le 3 classi che poi andrò ad inserirne il nome nel campo identificatore di ogni file audio.
Tre file AS :
Over.as
Code:
package
{
import flash.media.Sound;
import flash.media.SoundChannel;
public class Over extends Sound
{
private var sound:SoundChannel;
public function Over()
{
sound=play();
}
}
}
Out.as
Code:
package
{
import flash.media.Sound;
import flash.media.SoundChannel;
public class Out extends Sound
{
private var sound:SoundChannel;
public function Out()
{
sound=play();
}
}
}
Click.as
Code:
package
{
import flash.media.Sound;
import flash.media.SoundChannel;
public class Click extends Sound
{
private var sound:SoundChannel;
public function Click()
{
sound=play();
}
}
}
Adesso torno nel FLA ( sounds.fla ) e assegno al file audio che ho scelto per l' evento del mouse over, identificatore Over.
Al file audio che ho scelto per l' evento del mouse out, assegno l' identificatore Out.
Al file audio che ho scelto per l' evento del click, assegno l' identificatore Click.
Ecco il risultato:
Analizziamo il codice.
Classe Main.as
Metodi:
initListener();
aggiungo un listener in ascolto delgi eventi del mouse ( MOUSE_OVER, MOUSE_OUT e CLICK ) che chiameranno i rispettivi metodi ad evento avvenuto.
bottone_btn.addEventListener(MouseEvent.MOUSE_OVER ,isOver);
bottone_btn.addEventListener(MouseEvent.MOUSE_OUT, isOut);
bottone_btn.addEventListener(MouseEvent.CLICK,isCl ick);
isOver();
istanzio la classe Over ( che estende la classe Sound ed è assegnata ad un file audio in libreria )
var sound_over:Over=new Over();
isOut();
istanzio la classe Out ( che estende la classe Sound ed è assegnata ad un file audio in libreria )
var sound_out:Out=new Out();
isClick();
istanzio la classe Click ( che estende la classe Sound ed è assegnata ad un file audio in libreria )
var sound_click:Click=new Click();
Classi Over.as, Out.as e Click.as
Proprietà
un' istanza della classe SoundChannel
private var sound:SoundChannel;
Nelle rispettive funzioni costruttrici ( public function Over() / Out() / Click() ) dico a SoundChannel di riprodurre il suono
sound=play();
NB: quel comando play() è riferito alla classe in cui si trova, quindi, dato che la classe estende la classe Sound, è come dire istanzaSound.play();
volevo resettare la domanda ma era "expired" il limite per editare il mio post. Cmq ho capito, sembra un comando molto semplice e intuitivo e pulito. Non so come fosse con AS 2.0, perchè al tempo non ero ancora "nato"....