Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-06-2009, 12:03   #1 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
Sound startet bei preloader zu früh - addChild

Hallo Leute,

habe eine Frage:
Ich habe einen Preloader, der mir meinen Hauptfilm läd und nach einer bestimmten Zeit (Animation) mit
ActionScript:
  1. addChild();
auf die Bühne positioniert und anzeigt.
Funktioniert einwandfrei :-)

Aber:
Im Hauptfilm befindet sich ein Background Sound, der eingentlich erst starten soll, wenn addChild ausgeführt wird.
Der Sound startet aber schon bereits, wenn der Preloader die externe SWF fertig geladen hat (also bei on-load-complete).

Wie kann man das umgehen? Gibts dafür evtl nen bestimmten Listener?
deejayy ist offline   Mit Zitat antworten
Alt 24-06-2009, 12:16   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Da kann man ohne weitere Infos nur raten...
  Mit Zitat antworten
Alt 24-06-2009, 12:27   #3 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
also im Hauptfilm steht im ersten Schlüsselbild folgender Code (der für den Sound wichtig ist):
ActionScript:
  1. var soundchannel3:SoundChannel;
  2. var hintergrundsound:BGSound = new BGSound();
  3. var soundchannel3Vol:Number = 0.3;
  4.  
  5. soundchannel3 = hintergrundsound.play(0);
  6. soundchannel3.soundTransform = new SoundTransform(soundchannel3Vol);

im Preloader (frame 1):
ActionScript:
  1. var myRequest:URLRequest = new URLRequest("haupt.swf");
  2. var myLoader:Loader = new Loader();
  3.  
  4. myLoader.load(myRequest);
  5.  
  6. myLoader.contentLoaderInfo.addEventListener(Event.OPEN,showPreloader);
  7. myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
  8. myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,showContent);

-> bei showContent gehts einfach weiter auf Frame2 (gotoAndPlay(2).
Hier folgt Animation für 2 Sekunden.
Dann in Frame 50 (nach den 2 Sekunden):
ActionScript:
  1. addChild(myLoader);
  2. setChildIndex(myLoader, 1);

Das wars.
Der Sound beginnt aber schon nach Event.COMPLETE. Er soll aber erst nach dem addChild(myLoader); beginnen.

Hoff nun reichen die Infos :-)
deejayy ist offline   Mit Zitat antworten
Alt 24-06-2009, 13:10   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Dann setz den sound.play in den complete-Handler...
  Mit Zitat antworten
Alt 24-06-2009, 13:16   #5 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
aber der Sound liegt ja im externen SWF und das Event.COMPLETE im preloader.swf!

Und der Sound soll ja nicht bei Event.Complete starten, sondern erst zeitlich später, wenn 2 Sekunden nach Event.Complete das externe swf auf die Bühe geadded wird.
Momentan startet ja der Sound bereits bei Event.Complete. Genau das soll er nicht!

Huiuiui... hört sich etwas kompliziert an

Geändert von deejayy (24-06-2009 um 13:17 Uhr)
deejayy ist offline   Mit Zitat antworten
Alt 24-06-2009, 14:32   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ja, das ist alles viel zu umständlich... Ich würde einen Preloaderfilm erstellen, im complete-Event mit dispatchEvent das Event an den Hauptfilm weitergeben und im Hauptfilm mit addEventListener das complete-Event abfangen.

Dann könntest du am Ende deiner Animation mit dispatchEvent einen weiteren Event an deinen Hauptfilm leiten, um danach den Sound zu starten.

AS3 ist doch gerade für sein neues Event-Handling berühmt...
  Mit Zitat antworten
Alt 24-06-2009, 19:52   #7 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
okay :-)

Die Logik hab ich zwar verstanden, aber ist es wirklich nur so umständlich möglich? Ist ja wahnsinn :-)

Hätte trotzdem noch eine Frage:
Wie kann man unter swf´s (also in meinem Falle vom preloader.swf auf das geladene.swf) Events hin und her schicken?
Wüsste schon einfach nicht von der Syntax, wie das geht.

Hast du da ein Beispiel?
deejayy ist offline   Mit Zitat antworten
Alt 24-06-2009, 20:00   #8 (permalink)
Neuer User
 
Benutzerbild von deejayy
 
Registriert seit: Nov 2005
Ort: Bayern
Beiträge: 225
Ich habs hinbekommen!

Hatte gerade noch was ausgetestet (mehr durch zufall) und es geht so:

ActionScript:
  1. this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
  2.  
  3. function onAddedToStage( pEvent:Event ):void {
  4.     soundchannel3 = hintergrundsound.play(0);
  5.     soundchannel3.soundTransform = new SoundTransform(soundchannel3Vol);
  6. }

Im geladenen SWF einfach einen Listener ADDED_TO_STAGE einbauen, und erst dann den Sound starten! Funktioniert einwandfrei :-)
deejayy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele