Hallo,
habe mal ein Beispiel-File gemacht (
http://www.iPARTNER.de/hds/diashow.zip). Da es durch den Sound jedoch nicht gerade klein ist, werde ich es in der nächsten Zeit wieder von Server nehmen. Daher hier die Erklärung:
1. Erstelle eine Datei mit den Bildern. Dabei liegen die Bidler hintereinander in der Timeline, durch ein stop() wird bei jedem Bild gestoppt. Wird ein Knopf für ein anderes Bild geklickt springt man mit gotoAndStop() zum entsprechenden Bild.
2. Im ersten Frame steht zusätzlich folgendes ActionScript:
_root.onLoad = function()
{
// Laden der Musik und abspielen
_root.mySound = new Sound();
_root.mySound.attachSound( "music");
_root.mySound.start();
}
Hiermit wird aus der Bibliothek ein Sound mit Namen "music" geladen. Dieser muss vorher, wie bei allen dynamisch instanzierten Symbolen üblich, ein Verknüpfungsnamen (hier ebenfalls music) angelegt werden. Ansonsten wird der Sound nicht mit in die swf exportiert und Dein Skript geht nicht.
Der Sound wird also instanziert und abgespielt. Da die Funktionalitätt in onLoad der Hauptzeitleiste ausgeführt wird, geschieht dies nur beim Laden der Hauptzeitleiste und nicht, wenn Du Frame 1 anspringst.
3. Im Frame des letzten Bildes gibt es nun auch noch ein Skript:
function ausfaden()
{
// Volume auslesen
vol = _root.mySound.getVolume();
trace("Vol: " + vol);
// Wenn der Ton eine Lautstärke von 0 hat, wird
// die Funktion wieder entfernt
if (vol <= 0)
{
trace("Sound ausgeblendet");
clearInterval(id);
}
else
{
// Lautstärke um 2 verringern
_root.mySound.setVolume(vol - 2);
}
}
// Die Funktion ausfaden wird 10x in der Sekunde aufgerufen
id = setInterval(ausfaden, 100, id);
Hier definiere ich zuerst eine Funktion ausfaden(). Diese macht nichts anderes als bei jedem Aufruf die Lautstärke des Sounds auszulesen und zu erringern. Wenn die Laufstärke 0 ist führt es clearInterval(id) aus.
Die Funktion ausfaden wird per setInterval ins "System eingehängt" und wird 10 mal in der Sekunde aufgerufen 100/1000 sec. An diese Funktion habe ich die "Nummer" dieses Intervals mitgegeben, damit ich es später gezielt mit clearInterval töten kann.
Das war's.
Grüsse,
Helge
--
Web- & Multimedia-Development * Creative Software Training
http://www.iPartner.de