2010-12-15 158 views
0

Sur une image dans mon projet flash il y a 6 boutons. Lorsque vous cliquez sur un bouton, une autre chanson joue. Simple. Le problème est que la première chanson de la liste joue la seconde que le projet charge au lieu d'attendre que quelqu'un clique sur le bouton!son joue automatiquement - flash

import fl.events.SliderEvent; 
var snd:Sound; 
var channel:SoundChannel; 
var trans:SoundTransform; 
var currSong:String; 
var currVol:Number = .5; 
var currPan:Number = 0; 


var songList:Array=new Array("Drifting.mp3","Push.mp3", 
          "Stupid.mp3","Train Wreck.mp3","World on Fire.mp3","Fallen.mp3"); 


panSlide.visible=false; 
volSlide.visible=false; 


song1.addEventListener(MouseEvent.CLICK, chooseSong); 
song2.addEventListener(MouseEvent.CLICK, chooseSong); 
song3.addEventListener(MouseEvent.CLICK, chooseSong); 
song4.addEventListener(MouseEvent.CLICK, chooseSong); 
song5.addEventListener(MouseEvent.CLICK, chooseSong); 
song6.addEventListener(MouseEvent.CLICK, chooseSong); 
panSlide.addEventListener(SliderEvent.CHANGE, panChange); 
volSlide.addEventListener(SliderEvent.CHANGE, volumeChange); 



function chooseSong(e:MouseEvent):void { 
    switch (e.currentTarget.name) { 
     case "song1": 
      currSong = "../MP3s/"+songList[0] as String; 
      break; 

     case "song2": 
      currSong = "../MP3s/"+songList[1] as String; 
      break; 

     case "song3": 
      currSong = "../MP3s/"+songList[2] as String; 
      break; 

     case "song4": 
      currSong = "../MP3s/"+songList[3] as String; 
      break; 

     case "song5": 
      currSong = "../MP3s/"+songList[4] as String; 
      break; 

     case "song6": 
      currSong = "../MP3s/"+songList[5] as String; 
      break; 
    } 
    if (snd != null) { 
     channel.stop(); 
    } 
    snd = new Sound(); 
    snd.load(new URLRequest(currSong)); 

    channel = new SoundChannel ; 
    trans = new SoundTransform(currVol,currPan); 
    channel = snd.play(); 
    channel.soundTransform = trans; 
    panSlide.visible = true; 
    volSlide.visible = true; 
} 


function volumeChange(e:SliderEvent):void { 
    currVol = e.target.value; 
    trans.volume = currVol; 
    channel.soundTransform = trans; 
} 



function panChange(e:SliderEvent):void { 
    currPan = e.target.value; 
    trans.pan = e.target.value; 
    channel.soundTransform = trans; 
} 

Répondre

1

Etes-vous sûr de ne pas avoir accidentellement ajouté de son à la timeline? Sinon, vous devriez ajouter une trace dans la méthode chooseSong et vérifier si elle est déclenchée lorsque vous chargez le projet.

J'ai créé un nouveau fichier avec un mc (song1) sur scène et ce script. Est-ce que ça marche pour toi?

song1.addEventListener(MouseEvent.CLICK, chooseSong); 

function chooseSong(e:MouseEvent):void { 
    trace (e.currentTarget.name) 
} 
+0

bien que savez-vous, je l'ai ajouté à la ligne de temps. Retiré cela mais maintenant rien ne joue quand vous cliquez sur les boutons. – Expecto

+0

Avez-vous l'URL sonore correcte dans la fonction? trace (currSong) après le commutateur. – Mattias

+0

Je ne reçois rien - et ajouter trace (currSong) ne fait rien non plus, rien ne se passe lorsque vous appuyez sur la période des boutons. – Expecto

1

Ceci est juste un tir dans l'obscurité, mais vous n'avez pas ajouté accidentellement la chanson à la scène quelque part? Cela peut ou non entraîner la lecture automatique de la chanson lors du chargement du film.

Vérifiez également vos commandes, un simple clic-droit pourrait poser problème.