Copy link to clipboard
Copied
CS6 Flash, actionscript3
Hello, I want a different sound to be produced each time one button is clicked? Can anyone tell me how to do this or where to find the answer? I'm a beginner to animation. Thanks, Breanna
Copy link to clipboard
Copied
What would you do to generate a specific sound from one button? Show the code you would use.
Copy link to clipboard
Copied
I'm still a beginner myself but this is how i would do it:
first i would load all the sounds. It would look something like this:
var gameSound1:Sound = new Sound();
var myChannel1:SoundChannel = new SoundChannel();
gameSound1.load(new URLRequest("Sound1.mp3"));
var gameSound2:Sound = new Sound();
var myChannel2:SoundChannel = new SoundChannel();
gameSound2.load(new URLRequest("Sound2.mp3"));
then i would make a mouse click event listener for the button:
button.addEventListener(MouseEvent.CLICK, randomSound);
then the function that randomizes the music and plays it:
function randomSound(myEvent:MouseEvent):void{
var musicNumber:Number;
musicNumber= Math.ceil(Math.random()*2);
if(musicNumber == 1){
myChannel1 =gamesound1.play(0,999);
}else if(musicNumber == 2){
myChannel2 =gamesound2.play(0,999);
}
}
Copy link to clipboard
Copied
Here's a slightly different approach which uses the same Sound variable each time to create a new Sound object. You need to be able to stop the current channel in order to start a new one and avoid having things overlapping/piling up on one another.
The conditional assigns the file to load rather than picking which Sound object to play.
I also changed the randomizing code slightly. Math.random returns a vaoue from 0 to < 1, so you could end up with a zero and your conditions wouldn't cover it. By going with the floor instead of the ceiling the results will only ever be 0 or 1.
var gameSound:Sound;
var myChannel:SoundChannel = new SoundChannel();;
button.addEventListener(MouseEvent.CLICK, randomSound);
function randomSound(myEvent:MouseEvent):void{
gameSound = new Sound();
var musicNumber:Number = Math.floor(Math.random()*2);
myChannel.stop();
if(musicNumber == 0){
gameSound.load(new URLRequest("Sound1.mp3"));
} else if(musicNumber == 1){
gameSound.load(new URLRequest("Sound2.mp3"));
}
myChannel = gameSound.play(0,999);
}
Copy link to clipboard
Copied
Thats true i forgot that part on mine. Would have to put a stop the previous play on mine before the play to keep from overlapping.
Copy link to clipboard
Copied
Also thought i'd mention a couple books I've used to help learn that are really good. The adobe classroom in a book series, one is for actionscript 3.0 and one is for flash.They are great to help learn the basics. Each chapter was just a simple example you make that just take 30mins to little over an hour to do.
Get ready! An upgraded Adobe Community experience is coming in January.
Learn more