Soundobjekt starten

intercorni

Erfahrenes Mitglied
Hallo,

ich habe ein Problem mit Soundobjekten, die sich nicht unabhängig voneinander starten und stoppen lassen.
Alle Sounds habe ich in ein externes Movie (soundset.swf) und lade diese dort direkt aus der Bibl. in das erste Schlüsselbild. Undzwar so:

PHP:
//sound03
var einf_01:Sound = new Sound(this);
einf_01.attachSound("einf_01");
einf_01.stop();
//sound04
var einf_02:Sound = new Sound(this);
einf_02.attachSound("einf_02");
einf_02.stop();

Dieses soundset.swf lade ich dann das Hauptmovie, undzwar in einem Container-MC (sound_mc) , ausdem die Soundobjekte dann angesprochen werden:
PHP:
sound_mc.loadMovie("soundset.swf");
Nun überprüfe ich, ob soundset.swf auch fertig geladen wurde und spreche dan die einzelnen Soundobjekte an:
PHP:
_root.sound_mc.einf01.start();
_root.sound_mc.einf02.stop();
Allerdings kann ich jetzt einf01 nicht starten, solange einf02 auf stop gesetzt wird.
Wie kann ich denn beide Soundobjekte unabhängig voneinander ansprechen, also starten und stoppen?

Gruss,

Cornel
 
Hallo,

beim Aufruf des SoundObject-Konstruktors hast du zweimal dieselbe Zeitleiste (this) als Container angegeben. Stattdessen solltest du jedem SoundObject eine eigenen Container-MovieClip zuweisen:

Code:
var u = this.getNextHighestDepth();
var einf_01:Sound = new Sound(this.createEmptyMovieClip("mc"+u, u));
u++;
var einf_02:Sound = new Sound(this.createEmptyMovieClip("mc"+u, u));

//usw

gruss
 
Mit der Vergabe von eigenen Movie-Clips habe ich auch schon experimentiert, allerdings komme ich mit dem Ansprechen nicht klar:
PHP:
var sound_mc1:MovieClip = this.createEmptyMovieClip("smc01", 1);  
var ap01:Sound = new Sound(sound_mc1);  
ap01.attachSound("ap01");  
ap01.stop();

Definiere ich einen Button, läßt sich damit der Sound starten:
PHP:
btn.onRelease = function()
{
	sound_mc.ap01.start()};

Lege ich allerdings das Scripting pur in das Frame, passiert leider nichts:
PHP:
sound_mc.ap01.start();

Was mache ich denn falsch?

Gruss,

Cornel
 
Hallo,

du gibst dem Konstruktor bloss eine Art zuständige Zeitleiste mit, das Sound-Objekt wird deswegen aber nicht verschoben:

Code:
var sound_mc1:MovieClip = this.createEmptyMovieClip("smc01", 1);  
var ap01:Sound = new Sound(sound_mc1);  
ap01.attachSound("ap01"); 
ap01.start();

gruss
 
Ich hab das Soundobjekt nun so definiert, wobei ich nicht genau weiß, ob es richtig ist:
PHP:
var u = this.getNextHighestDepth();
var einf_01:Sound = new Sound(this.createEmptyMovieClip("smc"+u, u));
u++;
var ap01:Sound = new Sound(einf_01);  
ap01.attachSound("ap01");  
ap01.stop(); 
//
Denn mit dem Starten klappt es noch nicht:
PHP:
sound_mc.ap01.start();
 
Hallo,

ch könnte mir vorstellen, dass dein start-Aufruf abgearbeitet wurde, bevor die Sound-swf überhaupt geladen war, darum hab ich den start-Aufruf an den onLoadInit-Event eines MovieClipLLoaders gebunden. So solltest du keine Probleme mit der Synchronisierung haben.

Code auf dem Keyframe des Sound-Files:
Code:
var sound_1: Sound = new Sound(this.createEmptyMovieClip ("s1", 0));
sound_1.attachSound("loop1");
sound_1.stop()

var sound_2: Sound = new Sound(this.createEmptyMovieClip ("s2", 1));
sound_2.attachSound("loop2");
sound_2.stop();

Code auf dem Keyframe des Files, in das die Sound-Datei geladden werden soll:
Code:
var ct: MovieClip = this.createEmptyMovieClip("sounds", 0);
var loader: MovieClipLoader = new MovieClipLoader();

function onLoadInit (): Void {
	this.loader.removeListener(this);
	this.sounds.sound_1.start();
}
loader.addListener(_root);
loader.loadClip("sounds.swf", ct);

gruss
 
Das habe ich jetzt einmal so ausprobiert.
Im soundset.swf, worin sich alle Attach-Sounds befinden habe ich
folgendes Scripting verwendet:
PHP:
var sound_1: Sound = new Sound(this.createEmptyMovieClip ("s1", 0));
sound_1.attachSound("ap01");
sound_1.stop()

Gege ich z.B. sound_1.start() ein, so wird dieses Soundobjekt gestartet.

Im Hauptfilm habe ich im ersten Frame folgendes Scripting zum Laden
und starten eingegeben:
PHP:
stop();
var ct: MovieClip = this.createEmptyMovieClip("sounds", 0);
var loader: MovieClipLoader = new MovieClipLoader();

function onLoadInit (): Void {
	this.loader.removeListener(this);
	this.sounds.sound_1.start();
}
loader.addListener(_root);
loader.loadClip("sounds.swf", ct);

Allerdings bekomme ich den Sound nicht gestartet, irgendein Fehler in der Pfadangabe?
Ich kann nichts erkennen, woran es liegt.

Gruss,

Cornel
 
Hallo,

wenn deine *.swf natürlich immer noch soundset.swf heisst, kann mein Skript nicht funktionieren, da die URL-Angabe im loadClip-Befehl nicht stimmt, da ich das File "sound.swf" genannt habe. Ist vielleicht ein wenig dämlich meinerseits, sorry. Aber ansonsten hab ich das Skript getestet und es hat einwandfrei funtioniert...

gruss
 
Zurück