2011-07-19 5 views
0

J'ai construit un site Flash qui est utilisé comme outil d'enseignement. Le client aimerait maintenant ajouter des voix-off aux sections. Y a-t-il un moyen de jouer un son une fois sur un clip, et si le spectateur revient à ce clip, alors le son ne sera plus joué? Merci.Jouer un son une fois en Flash

Répondre

3

Cela devrait faire l'affaire. Je n'ai pas testé ce code dans Flash mais cela devrait vous permettre d'aller dans la bonne direction.

import flash.net.SharedObject 

//Use anything in place of "sounds" 
var so:SharedObject = SharedObject.getLocal("sounds"); 

//Check if the sound has not been played 
//Use anything in place of "specificSoundPlayed" 
if(so.data.specificSoundPlayed == false) 
{ 
//Play the sound 
var snd:Sound = new Sound(); 
snd.load(new URLRequest("my.mp3")); 
snd.play(); 

//Set the shared object property so we know the sound was played 
so.data.specificSoundPlayed = true; 
} 
+0

Cela serait utilisé pour jouer le son une seule fois même si elles ferment le swf et le revisiter sur le même ordinateur/navigateur – zachzurn

+0

Merci beaucoup. – cbeezy

0

Vous pouvez définir un indicateur booléen sur false une fois que le son a été joué une fois.

var flag:Boolean = false; 
if(!flag){ 
    flag = true; 
    playSound(); 
} 
+0

Mais si cela s'exécute à chaque fois que l'utilisateur entre dans le cadre sur lequel le code existe, alors le drapeau sera toujours vrai à chaque fois, et donc le son sera joué à chaque fois. Cela devrait être traité ailleurs, hors de la chronologie donnée. – scriptocalypse

+0

ouais l'initialisation du drapeau ne se passe pas sur la même image, c'était juste censé illustrer le concept. Cette première ligne devrait aller quelque part où l'application est initialisée, c'est-à-dire ne s'exécuter qu'une seule fois. –

1

J'aime la réponse de zachzurn. SharedObject est à peu près le seul moyen de stocker des données de type cookie sur une machine. Mais je vous suggère de vous assurer d'ajouter le piégeage d'erreur requis (comme les blocs try/catch) car certains utilisateurs (y compris moi-même) ont défini leurs paramètres Flash Player pour empêcher les sites de stocker des objets partagés.

Si vous ne voulez pas dépendre de SharedObject, vous aurez probablement besoin de configurer certains appels entrant et sortant de Flash vers d'autres technologies côté serveur. Si votre site nécessite que les utilisateurs se connectent, il se peut que vous ayez déjà des données persistantes pour les utilisateurs. vous pouvez ajouter des appels de service qui permettent à Flash d'envoyer et de recevoir des données sur la lecture du son.