sound & preload zum Xten mal

zac

Grünschnabel
Hallo Flasher
Ich bin schon seit Tagen auf der Suche nach einem preload für mein Soundfile (900KB) / soundfile selbst funktioniert hervorragend (es dauert aber leider einige Zeit, bis es überhaupt dargestellt wir) und mir raucht der Kopf, da ich leider bislang immer noch nicht fündig wurde. Ich wär froh, wenn mir jemand unter meine Arme greifen könnte...

1. soundfile beinhaltet 5 verschiedene sounds:
song = new Sound();
song.attachSound('sound01');
song.setVolume(100);
song.stop(0,999);

+ auf Buttonklick:
on (release, keyPress "<Space>") {
song.start();

Die sounds liegen in der bibliothek, wurden verknüpft und in den ersten frame geladen.
Aus diesem Grund dachte ich an einen externen "preloader", der einen "ladebalken" beinhaltet und das grosse File in einen emptyMC lädt.

> im html wurde die sound.swf integriert
> sound.swf lädt in ihren emptyMC die sound_all.swf

leider funktioniert das nicht, da nicht im html dargestellt wird oder sonstige Probleme...

kann mir jemand bitte weiterhelfen oder einen tipp geben :-(
 
Hi und willkommen im Forum,

also ... Du hast eine SWF-Datei mit verknüpften Sounds, die mit Preloader in einen Hauptfilm geladen werden soll? Das geht nicht mit html, sondern mit AS und funktioniert im Prinzip wie jeder andere Preloader:
PHP:
container.loadMovie("die_sounds.swf");
this.onEnterFrame = function() {
    var cur = container.getBytesLoaded();
    var max = container.getBytesTotal();
    if (cur > 10 && max > 10) {
        var percent = cur * 100 / max;
        // Prozent anzeigen
        if (percent >= 100) {
            delete this.onEnterFrame;
        }
    }
}

Wenn Du externe Sounddateien (mp3) direkt einladen willst, gibt es auch für das Sound-Objekt die Eigenschaften getBytesLoaded und getBytesTotal.

Gruß
.
 
Danke für deine schnelle Antwort, Datic
So wie das aussieht kapier ich das nicht ganz.

Ich habe dein skript ausprobiert und es dir angehängt, damit du vielleicht besser siehst was ich falsch mache.

zac
 

Anhänge

Hi,

das stimmt schon soweit, Du musst nur die Leerzeichen (die ich im Code zur Formatierung verwendet habe) in Tabulatoren umwandeln, damit Flash keine Syntaxfehler erzeugt.

Wenn Du den Ladebalken mit einer Zeitleiste wachsen lässt, solltest Du ihn zunächst anhalten:
PHP:
balken.stop();
Dann kannst Du dort wo ich "Prozentanzeige" geschrieben habe, den Balken zu dem entsprechenden Frame springen lassen:
PHP:
_root.empty.loadMovie("sound_all.swf"); 
this.onEnterFrame = function() {
	var cur = _root.empty.getBytesLoaded(); 
	var max = _root.empty.getBytesTotal(); 
	if (cur > 10 && max > 10) { 
		var percent = cur * 100 / max;
		// Hier den Balken steuern:
		balken.gotoAndStop(int(percent) + 1);
		if (percent >= 100) { 
			delete this.onEnterFrame; 
		} 
	} 
}
Wenn Du den Fortschritt zusätzlich in dem Textfeld anzeigen willst, kannst Du z.B. so etwas:
PHP:
textfeld.text = percent + "% geladen";
einfügen.

Gruß
.
 
Danke - soweit so gut
scheint zu funktionieren, wenn ich es im Flash oder las swf teste.
Prüfe ich es jedoch in meinem sound.html, wo ich es normal eingebettet habe bleibt der das swf beim erste bild des ladebalken hängen.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="520" height="100">
<param name="movie" value="sound/sound.swf">
<param name="quality" value="high">
<embed src="sound/sound.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="520" height="100"></embed>
</object>

Habe den code so ins fla eingefügt
balken.stop();
_root.empty.loadMovie("sound_all.swf");
this.onEnterFrame = function() {
var cur = _root.empty.getBytesLoaded();
var max = _root.empty.getBytesTotal();
if (cur > 10 && max > 10) {
var percent = cur * 100 / max;
// Hier den Balken steuern:
balken.gotoAndStop(int(percent) + 1);
if (percent >= 100) {
delete this.onEnterFrame;
_root.balken._visible = 0;
_root.textfeld._visible = 0;
}
}
}

Muss ich noch etwas bedenken? Weiterhin stimmt natürlich der Pfad im externen swf nicht mehr: starte ich den sound als "_global.sound...

Grüsse
 

Anhänge

Hi,

ohne mir Dein pdf nun angesehen zu haben: Du bettest die sound.swf anscheinend in einem Unterordner (sound) ein. Pfadangaben in Flash beziehen sich immer auf den Ort der html-Datei, nicht auf den Pfad des Hauptfilmes.

Korrekt müsste es dann also heissen:
PHP:
_root.empty.loadMovie("sound/sound_all.swf");

Gruß
.
 
Grazias muchos. Klappt nun fast alles und ich danke dir vielmals.
Ein kleine Frage hätte ich aber noch: Welchen Pfad muss ich nun beim eingeladenen soundfile angeben ? _global.song.start ?

1. soundfile beinhaltet 5 verschiedene sounds:
song = new Sound();
song.attachSound('sound01');
song.setVolume(100);
song.stop(0,999);

+ auf Buttonklick:
on (release, keyPress "<Space>") {
stopAllSounds();
song.start();
gotoAndPlay("play1");
_root.song1.gotoAndStop(2);
 
damit dein Sound überhaupt läuft..
PHP:
      song = new Sound(this);
      song.attachSound("sound01");
Volumen 100 hat er sowieso
song.stop(0, 999); brauchst du nicht nicht..
und auf dein Button in der ex.swf
PHP:
      on (release, keyPress "<Space>") {
      	stopAllSounds();
      	song.start(0, 999);
    }
und wenn dein Button in der HZL liegt dann die Instanz ansprechen..
PHP:
_root.empty.song.start(0, 999);
 
Zuletzt bearbeitet:
Vielen herzlichen Dank ihr zwei. Ihr habt mir in meiner Entwicklung ;o) weitergeholfen.

Es hat übrgens nur das this gebraucht, dasss es funktioniert
-> song = new Sound(this);

Merci von zac
 
Zurück