Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-02-2008, 12:05   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 109
onLoadComplete/onLoadInit Problem

Hallo,

ich bin gerade etwas verwirrt.
Ich lade zur Laufzeit ein externes SWF.

Komischerweise wird das onLoadComplete Ereigniss VOR dem onLoadInit ausgelöst.

Wie kann das sein?

Er läd den Ganzen Film (besteht aus 3 Frames), fängt aber schon an das SWF abzuspielen obwohl kein Init ausgelöst wurde?

Für einen Hinweis wäre ich sehr dankbar...

Grüße

Stefan

Geändert von sbleicker (20-02-2008 um 12:08 Uhr)
sbleicker ist offline   Mit Zitat antworten
Alt 20-02-2008, 12:36   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Hi

Das onLoadComplete-Ereignis kommt vor dem onLoadInit und wird in diesem aufgerufen! Das heisst, wenn du das init auch aufgerufen haben möchtest, musst du dieses in deiner onLoadComplete-Prozedur aufrufen (du überschreibst ja den Aufruf in der "normalen" onLoadComplete-Methode mit deiner Zuweisung).

Übrigens ist es logisch, dass Complete vor Init kommt, bevor du was initialisieren kannst, musst du alles geladen haben!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 20-02-2008, 12:43   #3 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Zitat:
Zitat von sbleicker Beitrag anzeigen
Komischerweise wird das onLoadComplete Ereigniss VOR dem onLoadInit ausgelöst.

Wie kann das sein?
Weil das die Entwickler so vorgesehen haben. Daran ist nichts Komisches
zu finden ...

Zitat:
Er läd den Ganzen Film (besteht aus 3 Frames), fängt aber schon an das SWF abzuspielen obwohl kein Init ausgelöst wurde?
Der Init wird ja auch nicht vom Film ausgelöst, sondern von MovieClipLoader
selbst. Der onLoadInit-Listener ermöglicht es dem Entwickler, mit dem Film
zu interagieren, sobald dieser komplett geladen wurde. Bleibt der Listener
leer oder wird nicht definiert, spielt der Film natürlich ab - es sei denn er
hat selbst ein stop(); im ersten Frame stehen.
~pyropete~ ist offline   Mit Zitat antworten
Alt 20-02-2008, 12:47   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 109
Hi,

danke für die Info,

ich dachte das Complete wird ausgelöst wenn das komplette swf geladen ist und das init sobald der erste Frame des swf geladen ist...

So hab ich zumindest die Hilfe verstanden:
Code:
onLoadInit = function([target_mc: MovieClip]) {}

Wird aufgerufen, wenn die Aktionen im ersten Bild des geladenen Clips ausgeführt wurden. Wenn dieser Listener aufgerufen wurde, können Sie Eigenschaften festlegen, Methoden verwenden und auf andere Weise mit dem geladenen Film interagieren.
Heißt für mich, erst INIT, dann Complete...?!

Stefan

Code:
onLoadComplete = function([target_mc: MovieClip], [httpStatus: Number]) {}
Wird aufgerufen, wenn das Herunterladen einer Datei mit MovieClipLoader.loadClip() vollständig abgeschlossen ist.

Geändert von sbleicker (20-02-2008 um 12:50 Uhr)
sbleicker ist offline   Mit Zitat antworten
Alt 20-02-2008, 12:48   #5 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Zitat:
Zitat von bamboocha Beitrag anzeigen
Das onLoadComplete-Ereignis kommt vor dem onLoadInit und wird in diesem aufgerufen! Das heisst, wenn du das init auch aufgerufen haben möchtest, musst du dieses in deiner onLoadComplete-Prozedur aufrufen (du überschreibst ja den Aufruf in der "normalen" onLoadComplete-Methode mit deiner Zuweisung).
Ähh, wo hast Du das gelesen?

onLoadInit und onLoadComplete sind einfach zwei separate Ereignis-Listener
für das ausführende MovieClipLoader-Objekt, die auch separat gefeuert werden.

Das, was Du da schreibst ist nicht nur verwirrend sondern auch falsch.

Edit: @sbleicker
Ich hab zwar die englische Version von Flash 8, aber da steht in der deutschen
Version auch sicher das, was zu onLoadComplete in der englischen steht:

Zitat:
It's important to understand the difference between MovieClipLoader.onLoadComplete and MovieClipLoader.onLoadInit. The onLoadComplete event is called after the SWF, JPEG, GIF, or PNG file loads, but before the application is initialized. At this point, it is impossible to access the loaded movie clip's methods and properties, and therefore you cannot call a function, move to a specific frame, and so on. In most situations, it's better to use the onLoadInit event instead, which is called after the content is loaded and fully initialized
Also es empfiehlt sich immer, die Doku erst gründlich durchzulesen

Geändert von ~pyropete~ (20-02-2008 um 12:52 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 20-02-2008, 12:58   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 109
Das steht in der DEUTSCHEN Flash 8 Hilfe!



Danke für die Infos
sbleicker ist offline   Mit Zitat antworten
Alt 20-02-2008, 13:06   #7 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Zitat:
Zitat von ~pyropete~ Beitrag anzeigen
Ähh, wo hast Du das gelesen?

onLoadInit und onLoadComplete sind einfach zwei separate Ereignis-Listener
für das ausführende MovieClipLoader-Objekt, die auch separat gefeuert werden.

Das, was Du da schreibst ist nicht nur verwirrend sondern auch falsch.
Hmmmm... gute Frage! Wenn ich das jetzt so lese, ist das echt Schwachsinn, was ich geschrieben habe!? Mal wieder geschrieben, ohne nach zu denken.
Ich habe geglaubt, mal ein Beispiel gehabt zu haben, in dem wegen onLoadComplete onLoadInit nicht aufgerufen wurde und man das "manuell" tun musste. Ich habe nur leider keine Ahnung, wo das war - und würde jetzt eh sagen, dasses Schmarn ist und so nicht stimmen kann. Sorry, mein Fehler!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 20-02-2008, 14:39   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 109
"wird aufgerufen, wenn die Aktionen im ersten Bild des geladenen Clips ausgeführt wurden"

"des GELADENEN" Clips - Da liegt der hase im Pfeffer
Also Doch richtig, erst COMPLETE und dann INIT.

Dann muß ich jetzt mal überlegen wie ich feststelle das der erste Frame geladen wurde um dann eine Aktion auszulösen...


Danke

Stefan
sbleicker ist offline   Mit Zitat antworten
Alt 20-02-2008, 14:49   #9 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Zitat:
Zitat von sbleicker Beitrag anzeigen
Dann muß ich jetzt mal überlegen wie ich feststelle das der erste Frame geladen wurde um dann eine Aktion auszulösen...
Wieso überlegen?! Dazu ist onLoadInit da.

Mal ein simples Beispiel dazu:

ActionScript:
  1. // der Film loadme.swf
  2. // im ersten Frame auf _root
  3. function fSayHello():Void {
  4. trace("Hello.");
  5. trace("You just have triggered the function fSayHello in loadme.swf");
  6. }
  7. // der Film load.swf, der also loadme.swf reinlädt
  8. // im ersten Frame auf _root
  9. var myMCL:MovieClipLoader = new MovieClipLoader();
  10. var myMCLListener:Object = new Object();
  11. var myMC:MovieClip = this.createEmptyMovieClip("container_mc", 1000);
  12. myMCLListener.onLoadInit = function(mc:MovieClip):Void {
  13. trace("onLoadInit."+mc+" successfull");
  14. mc.fSayHello(); // <-- klappt
  15. }
  16. myMCLListener.onLoadComplete = function(mc:MovieClip):Void {
  17. trace("onLoadComplete."+mc+" successfull");
  18. mc.fSayHello(); // <-- klappt nicht
  19. }
  20. myMCL.addListener(myMCLListener);
  21. myMCL.loadClip("loadme.swf", myMC);

Geändert von ~pyropete~ (20-02-2008 um 14:50 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 20-02-2008, 15:13   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Beiträge: 109
Danke für das Script,

aber genau so mache ichs und das Init NACH dem Complete aufgerufen wird mach das doch keinen sinn.

PHP-Code:
_global.ladeDetail = function(swfDatei){
    
cleanup();
    
_root.stage_mc.content.removeMovieClip();
    var 
mclListener:Object = new Object();
    
mclListener.onLoadProgress = function(target_mc:MovieClipbytesLoaded:NumberbytesTotal:Number):Void  {
    };
    
    
mclListener.onLoadStart = function(target_mc:MovieClip) {
        
_root.attachMovie("action""action_mc"_root.getNextHighestDepth());
        
_root.action_mc._y Stage.height/2;
        
_root.action_mc._x Stage.width/2;
        
_root.action_mc._width 40;
        
_root.action_mc._height 40;
    }
    
    
mclListener.onLoadComplete = function(target_mc:MovieClip) {
        
trace("LoadComplete");
    }

    
mclListener.onLoadInit = function(target_mc:MovieClip) {
        
trace("LoadInit");
        
_root.action_mc.removeMovieClip();
    }

    var 
detail_mcl:MovieClipLoader = new MovieClipLoader();
    
detail_mcl.addListener(mclListener);
    
    
ziel _root.stage_mc.createEmptyMovieClip("content"_root.stage_mc.getNextHighestDepth());
    
detail_mcl.loadClip(swfDateiziel);

Bei mir wird zuerst das onLoadComplete ausgelöst und dann erst das onLoadInit. Den action_mc mochte ich removen sobald das erste Bild des zu ladenden SWF geladen wurde. So wie ich das sehe geht das so nicht?!

Stefan
sbleicker ist offline   Mit Zitat antworten
Alt 20-02-2008, 15:26   #11 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
removeMovieClip() greift nur, wenn die Instanz die removed werden soll auf
einer Tiefe <0 liegt.

PHP-Code:
mclListener.onLoadStart = function(target_mc:MovieClip) {
        
_root.attachMovie("action""action_mc"1000);
        
_root.action_mc._y Stage.height/2;
        
_root.action_mc._x Stage.width/2;
        
_root.action_mc._width 40;
        
_root.action_mc._height 40;
    }
     
mclListener.onLoadInit = function(target_mc:MovieClip) {
        
trace("LoadInit");
        
_root.action_mc.removeMovieClip();
    } 
Und wie gesagt: onLoadInit vor onLoadComplete ist unlogisch. Man muss
das Auto erst betanken, bevor man den Motor starten kann.
~pyropete~ 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 23:50 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele