Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-11-2003, 07:29   #1 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
wieder einmal Sound.onLoad

Hoi Leutz!

Ich hab bei einem Soundpreloader folgendes Problem.

wenn ich schreibe

ActionScript:
  1. o=new Sound();
  2. o.onLoad=function() {
  3.  trace("datei geladen oder nicht vorhanden")
  4. }
  5. o.loadSound("meine.mp3",false);

wird zwar das trace ausgeführt, aber bei meinem Bsp. kommt danach noch eine Mitteilung mittels broadcaster, in etwa so.

ActionScript:
  1. o=new Sound();
  2. o.onLoad=function() {
  3.  trace("datei geladen oder nicht vorhanden")
  4.  path.broadcastMessage("onComplete","datei geladen oder nicht vorhanden");
  5. }
  6. o.loadSound("meine.mp3",false);

dieser Broadcaster funktioniert bei TXT, XML, also müsste er auch bei dem Laden der MP3 ausgeführt werden, tut er aber nicht.

path ist eine Referenzvariable die definiert ist und sicher stimmt, denn es funktioniert ja alles, allerdings eben nur mit TXT und XML. Allerdings ist das eigenartige wenn ich den Sound streame

ActionScript:
  1. o.loadSound("meine.mp3",true);

und ein

ActionScript:
  1. o.onSoundComplete=function() {...brodcastMesage }

setze wird die Meldung rausgeschickt

Hat jemand schon ein ähnliches Verhalten festgestellt ?

mfg und mit bestem dank im voraus

eliias

edit:

Aja das eigenartige ist, dass nicht nur der Broadcaster nicht ausgeführt wird sondern auch eine switch-case die auch noch folgt einfach ignoriert wird. Also der Broadcaster kanns meiner Meinung sicher nicht sein.

edit2:

Das mit der Switch - Case stimmt nicht, ich habe wohl falsch getraced.
__________________
Blog
Ace of Mace

Geändert von eliias (08-11-2003 um 11:40 Uhr)
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 08:03   #2 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
also.. mal schritt für schritt.. deinem broacaster trau ich nun mal nicht übern weg nicht falsch verstehen... dafür müsste ich mal sehen wie du ihn angelegt hast.. und wie du dann die listener erzeugst... aber das ist nun gar nicht relevant für dein problem....

es ist ja eher so.. wenn die trace ausgeführt werden... sprich die onLoad methode richtig funktioniert.. wird auch alles andere gehen.. daher

onLoad... wird ausgeführt wenn der sound zu 100% geladen wurde
onSoundComplete.. wird ausgeführt wenn der sound (play) beendet wurde (stream)

ich sehe das ganze so.. du sagst ja selbest.. das trace wird ausgeführt... daher kann man mal sagen das ansich alles funktioniert nur dein broadcaster nicht.. und denn hast aber nicht gepostet..
ich frage mich ist die referenz path ein globale variabel auf ein broadcast object? denn kein pfad anzugeben == this.. und das geht dann sicher nicht.....
und ist onComplete eine Object.methode die mit addListener beim broadcaster registriert wurde? usw...
beim broadcaster kann man sehr viel falsch machen.....
wobei ich mich im moment frage... ob er in deinem fall nötig ist.. wie viele onComplete methoden registrierst du denn?
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-11-2003, 09:18   #3 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
so ich poste mal nen codeschnipsel, dass man die funktion des broadcasters genau sieht.

ActionScript:
  1. Preloader_Class=function() {
  2.     // Klassenreferenz
  3.     path=this;
  4.     // ASBroadcaster
  5.     ASBroadcaster.initialize(this);
  6.     this.addListener(this);
  7.     // Name:        TXT Lade-Funktion
  8.     // Parameter:   args ---> Array mit den Paramertern der vohergehend aufgerufenen Lade-Funktion
  9.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  10.     this.ladeTXT=function(args) {
  11.         var numberArgs=args.length;
  12.         this.o=new LoadVars();
  13.         this.o.load(args[0]);
  14.         tmp=this.o;
  15.         this.o.onLoad=function() {
  16.             path.broadcastMessage('onComplete','datei geladen');           
  17.             switch(args.length) {
  18.                 case 1:
  19.                     var dat8=String(args[0]).substr(0,8);
  20.                     _root[dat8]=new LoadVars(this);
  21.                     delete tmp;
  22.                 break;
  23.                 case 2:
  24.                     _root[args[1]]=new LoadVars(this);
  25.                     delete tmp;
  26.                 break;
  27.                 case 3:
  28.                     if(args[2]===true) {
  29.                         _root[args[1]]=new LoadVars(this);
  30.                     } else if(args[2]===false) {
  31.                         var dat8=String(args[0]).substr(0,8);
  32.                         _root[dat8]=new LoadVars(this);
  33.                     } else { return false };
  34.                     delete tmp;
  35.                 break;
  36.                 case 4:
  37.                     if(args[2]===true) {
  38.                         _root[args[3]]=new LoadVars(this);
  39.                     } else if(args[2]===false) {
  40.                         return false;
  41.                     } else  { return false };
  42.                     delete tmp;
  43.                 break;
  44.                    
  45.             }
  46.         }
  47.     }
  48.     // Name:        MP3 Lade-Funktion
  49.     // Parameter:   args ---> Array mit den Paramertern der vohergehend aufgerufenen Lade-Funktion
  50.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  51.     this.ladeMP3=function(args) {
  52.         var numberArgs=args.length;
  53.         this.o=new Sound();
  54.         this.o.onLoad=function() {
  55.             path.broadcastMessage('onComplete','datei geladen');
  56.             switch(args.length) {
  57.                 case 1:
  58.                     var dat8=String(args[0]).substr(0,8);
  59.                     _root[dat8]=new Sound(this);
  60.                     delete tmp;
  61.                 break;
  62.                 case 2:
  63.                     _root[args[1]]=new Sound(this);
  64.                     delete tmp;
  65.                 break;
  66.                 case 3:
  67.                     if(args[2]===true) {
  68.                         _root[args[1]]=new Sound(this);
  69.                     } else if(args[2]===false) {
  70.                         var dat8=String(args[0]).substr(0,8);
  71.                         _root[dat8]=new Sound(this);
  72.                     } else { return false };
  73.                     delete tmp;
  74.                 break;
  75.                 case 4:
  76.                     if(args[2]===true) {
  77.                         _root[args[3]]=new Sound(this);
  78.                     } else if(args[2]===false) {
  79.                         return false;
  80.                     } else  { return false };
  81.                     delete tmp;
  82.                 break;
  83.                    
  84.             }
  85.         }
  86.         this.o.loadSound(args[0],false);
  87.     }

So jetzt sieht man den direkten Vergleich, oben der Header ist natürlich nicht vollständig, man erkennt aber path und Broadcaster sind gut erkennbar

Dann erfolgt die Methode ladeTXT, diese funktioniert einwandfrei

Dann kommt die Methode ladeMp3, diese funktioniert mit onLoad nicht, da das Broadcastereigniss nicht aufgerufen wird.

Aja, das eigenartige ist ja ebendies, dass der Broadcaster bei onLoad nicht auslöst und wenn man auf onSoundComplete abfragt, sprich der Sound also ganz abgespielt wurde das ereigniss sehr wohl auslöst.
__________________
Blog
Ace of Mace

Geändert von eliias (08-11-2003 um 09:21 Uhr)
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 09:48   #4 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
this.addListener(this); ? besitzt die Klasse die Methode onComblete
und warum erstellst du path einfach so.. ohne allem? das schreibt er dann ja in _root.. warum nicht var this oder _global..

aber alles in allem hast denn wichtigsten teil die onComplete Methode mit der registrierung nicht gepostet

unter dem strich sehe ich auch nur zwei mögliche fehler quellen...

der pfad auf das ASBroadcaster object (in deinem fall die instanz der kasse Preloader_Class) ist nicht korrekt erreichbar für ...broadcastMessage...

oder das registrieren des listeners am ASBroadcaster (onComblete) ist nicht korrekt
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)
Scrawer ist offline   Mit Zitat antworten
Alt 08-11-2003, 11:26   #5 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
Also die Klasse verfügt über eine Methode onComplete die bei Beendigung des Ladevorgangs aufgerufen wird.

Deshalb keine Deklaration.

ActionScript:
  1. my_preloader=new Preloader_Class();
  2. my_preloader.load("meineDatei.mp3");
  3. my_preloader.onComplete=function() {
  4.  ...
  5. }

So würde das aussehen. Dieser Aufruf funktioniert ja auch bei dem Beispiel mit dem Laden der TXT das ich auch gepostet hatte.

Nur eben beim Sound funktioniert es nicht. Die Registrierung des Listeneres muss auch korrekt sein, denn sonst würde es ja auch bei der TXT nicht klappen, genauso wie der pfad auf das asb-objekt, wie du schon richtig geschrieben hast, in diesem fall eine instanz einer klasse.
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 11:29   #6 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
Also die Klasse verfügt über eine Methode onComplete die bei Beendigung des Ladevorgangs aufgerufen wird.

Deshalb keine Deklaration.

ActionScript:
  1. my_preloader=new Preloader_Class();
  2. my_preloader.load("meineDatei.mp3");
  3. my_preloader.onComplete=function() {
  4.  ...
  5. }

So würde das aussehen. Dieser Aufruf funktioniert ja auch bei dem Beispiel mit dem Laden der TXT das ich auch gepostet hatte.

Nur eben beim Sound funktioniert es nicht. Die Registrierung des Listeneres muss auch korrekt sein, denn sonst würde es ja auch bei der TXT nicht klappen, genauso wie der pfad auf das asb-objekt, wie du schon richtig geschrieben hast, in diesem fall eine instanz einer klasse.

Ich bin der Meinung das muss einfach am Sound-Objekt liegen. Ich kann mir nicht vorstellen das die onLoads von LoadVars, XML und Sound unterschiedlich agieren.

danke mal für deine bisherigen anregungen, den path werde ich gleich als variable initialisieren.
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 11:33   #7 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
ActionScript:
  1. // Autor:         Hannes Moser
  2. // Version:   0.11 beta, für AS 1.0
  3. // Allgemeines:  Parameter die in eckigen Klammern stehen sind optional
  4. //          Falls bei Name des Objektes nichts angegeben wird, verwendet die Klasse
  5. //          die ersten 8 Buchstaben des Dateinamens
  6. //          Falls der Parameter "Objekt erzeugen" fehlt, wird ein Objekt generiert
  7. //          Alle Objekte werden auf _level0 bzw. _root geladen falls nicht anders angegeben
  8. //          Es sind nur Dateinamen mit den Endungen .xml, .txt, .jpg, .swf, .mp3 erlaubt, nicht .jpeg, .css oder .html, etc.
  9. // Referenz:        obj.load();  --> lädt beliebige Datei [empfohlen für alle Einstellungen, ausdokumentiert]
  10. //          obj.ladeXML();  --> lädt eine XML [nicht empfohlen, undokumentierte Parameterübergabe]
  11. //          obj.ladeSWF();  --> lädt eine SWF [nicht empfohlen, undokumentierte Parameterübergabe]
  12. //          obj.ladeJPG();  --> lädt eine JPG [nicht empfohlen, undokumentierte Parameterübergabe}
  13. //          obj.ladeTXT();  --> lädt eine TXT [nicht empfohlen, undokumentierte Parameterübergabe]
  14. //          obj.getBytes(); --> gibt die bereits geladene Dateigröße in Bytes zurück
  15. //          obj.getKBytes(); --> gibt die bereits geladene Dateigröße ind Kilobytes zurück
  16. //          obj.getSize(); --> gibt die Gesamtgröße in Bytes zurück
  17. //          obj.getKsize(); --> gibt die Gesamtgröße in KBytes zurück
  18. //          obj.getPercent(); --> gibt die bereits geladene Prozentanzahl zurück
  19. //          obj.getLeftPercent(); --> gibt die Anzahl an Prozent zurück die noch geladen werden muss
  20. // Bemerkungen:  Der Autor dieser Klasse ist nicht verantwortlich für ev. Schäden oder Datenverlust die durch diese
  21. //          Klasse auftreten können. Dies ist ein Open-Source Projekt, die Verwendung für kommerzielle und
  22. //          private Zwecke ist bis auf Widerruf gestattet. Falls jemand vorhat diesen Code zu verwenden würde
  23. //          ich mich freuen wenn ihr mir eine E-Mail schreibt damit ich sehe was ihr daraus gemacht habt.
  24. Preloader_Class=function() {
  25.     // Klassenreferenz
  26.     var path=this;
  27.     // ASBroadcaster
  28.     ASBroadcaster.initialize(this);
  29.     this.addListener(this);
  30.     // Name:        Lade-Funktion
  31.     // Parameter:   Daten-Url,[Name des neuen Objektes],[true/false, ob Objekt erzeugt wird],[Pfad des neuen Objektes])
  32.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  33.     // Zusatzinfo:  Falls ein Pfad bei dem optionalen Parameter [Pfad des neuen Objektes] angegeben wird, muss dieser
  34.     //        bereits vorhanden sein, diese Klasse generiert keinen Verzeichnisbaum, alle optionalen Parameter bis
  35.     //        auf [Objekt generieren true/false] müssen als Stringliteral eingegeben werden z.B.: "name"
  36.     this.load=function(dataUrl,dataName,dataFlag,dataPath) {
  37.         this.numberArgs=arguments.length;
  38.         if(this.numberArgs<1){
  39.             return false;
  40.         }
  41.         var findType=String(dataUrl).split(".");
  42.         this.fileName=findType[0];
  43.         this.fileType=findType[1];
  44.         var args=new Array(numberArgs);
  45.         var zähler=0;
  46.         while(zähler<this.numberArgs) {
  47.             args[zähler]=arguments[zähler];
  48.             zähler++;
  49.         }
  50.         delete zähler;
  51.         switch(this.fileType) {
  52.             case "xml":
  53.                 this.ladeXML(args);
  54.             break;
  55.             case "txt":
  56.                 this.ladeTXT(args);
  57.             break;
  58.             case "swf":
  59.                 this.ladeSWF(args);
  60.             break;
  61.             case "jpg":
  62.                 this.ladeJPG(args);
  63.             break;
  64.             case "mp3":
  65.                 this.ladeMP3(args);
  66.             break;
  67.             default :
  68.                 return false;
  69.         }
  70.     }
  71.     // Name:        XML Lade-Funktion
  72.     // Parameter:   args ---> Array mit den Paramertern der vohergehend aufgerufenen Lade-Funktion
  73.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  74.     this.ladeXML=function(args) {
  75.         var numberArgs=args.length;
  76.         this.o=new XML();
  77.         this.o.ignoreWhite=1;
  78.         this.o.load(args[0]);
  79.         tmp=this.o;
  80.         this.o.onLoad=function() {
  81.             path.broadcastMessage('onComplete','datei geladen');
  82.             switch(args.length) {
  83.                 case 1:
  84.                     var dat8=String(args[0]).substr(0,8);
  85.                     _root[dat8]=new XML(this);
  86.                     delete tmp;
  87.                 break;
  88.                 case 2:
  89.                     _root[args[1]]=new XML(this);
  90.                     delete tmp;
  91.                 break;
  92.                 case 3:
  93.                     if(args[2]===true) {
  94.                         _root[args[1]]=new XML(this);
  95.                     } else if(args[2]===false) {
  96.                         var dat8=String(args[0]).substr(0,8);
  97.                         _root[dat8]=new XML(this);
  98.                     } else { return false };
  99.                     delete tmp;
  100.                 break;
  101.                 case 4:
  102.                     if(args[2]===true) {
  103.                         _root[args[3]]=new XML(this);
  104.                     } else if(args[2]===false) {
  105.                         return false;
  106.                     } else  { return false };
  107.                     delete tmp;
  108.                 break;
  109.                 default:
  110.                     delete tmp; 
  111.                 break;
  112.             }
  113.         }
  114.     }
  115.     // Name:        TXT Lade-Funktion
  116.     // Parameter:   args ---> Array mit den Paramertern der vohergehend aufgerufenen Lade-Funktion
  117.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  118.     this.ladeTXT=function(args) {
  119.         var numberArgs=args.length;
  120.         this.o=new LoadVars();
  121.         this.o.load(args[0]);
  122.         tmp=this.o;
  123.         this.o.onLoad=function() {
  124.         path.broadcastMessage('onComplete','datei geladen');           
  125.             switch(args.length) {
  126.                 case 1:
  127.                     var dat8=String(args[0]).substr(0,8);
  128.                     _root[dat8]=new LoadVars(this);
  129.                     delete tmp;
  130.                 break;
  131.                 case 2:
  132.                     _root[args[1]]=new LoadVars(this);
  133.                     delete tmp;
  134.                 break;
  135.                 case 3:
  136.                     if(args[2]===true) {
  137.                         _root[args[1]]=new LoadVars(this);
  138.                     } else if(args[2]===false) {
  139.                         var dat8=String(args[0]).substr(0,8);
  140.                         _root[dat8]=new LoadVars(this);
  141.                     } else { return false };
  142.                     delete tmp;
  143.                 break;
  144.                 case 4:
  145.                     if(args[2]===true) {
  146.                         _root[args[3]]=new LoadVars(this);
  147.                     } else if(args[2]===false) {
  148.                         return false;
  149.                     } else  { return false };
  150.                     delete tmp;
  151.                 break;
  152.                    
  153.             }
  154.         }
  155.     }
  156.     // Name:        MP3 Lade-Funktion
  157.     // Parameter:   args ---> Array mit den Paramertern der vohergehend aufgerufenen Lade-Funktion
  158.     // Allgemeines: Funktion gibt false zurück falls ein Fehler auftritt
  159.     this.ladeMP3=function(args) {
  160.         var numberArgs=args.length;
  161.         this.o=new Sound();
  162.         this.o.onLoad=function() {
  163.         path.broadcastMessage('onComplete','datei geladen');
  164.             switch(args.length) {
  165.                 case 1:
  166.                     var dat8=String(args[0]).substr(0,8);
  167.                     _root[dat8]=new Sound(this);
  168.                     delete tmp;
  169.                 break;
  170.                 case 2:
  171.                     _root[args[1]]=new Sound(this);
  172.                     delete tmp;
  173.                 break;
  174.                 case 3:
  175.                     if(args[2]===true) {
  176.                         _root[args[1]]=new Sound(this);
  177.                     } else if(args[2]===false) {
  178.                         var dat8=String(args[0]).substr(0,8);
  179.                         _root[dat8]=new Sound(this);
  180.                     } else { return false };
  181.                     delete tmp;
  182.                 break;
  183.                 case 4:
  184.                     if(args[2]===true) {
  185.                         _root[args[3]]=new Sound(this);
  186.                     } else if(args[2]===false) {
  187.                         return false;
  188.                     } else  { return false };
  189.                     delete tmp;
  190.                 break;
  191.                    
  192.             }
  193.         }
  194.         this.o.loadSound(args[0],false);
  195.     }
  196.  
  197.     // Name:        getBytes: bereits geladene Byteanzahl des zu ladenden Objektes
  198.     // Parameter:   keine Parameter
  199.     // Allgemeines: Funktion gibt einen nicht gerundeten Wert zurück, die Byteanzahl bezieht sich auf das temporäre
  200.     //        Objekt "o", in das prinzipiell geladen wird.
  201.     this.getBytes=function() { return this.o.getBytesLoaded(); }
  202.     // Name:        getSize: Gesamtanzahl der Bytes der zu ladenden Datei
  203.     // Parameter:   keine Parameter
  204.     // Allgemeines: Funktion gibt einen nicht gerundeten Wert zurück, die Byteanzahl bezieht sich auf das temporäre
  205.     //        Objekt "o", in das prinzipiell geladen wird.
  206.     this.getSize=function() { return this.o.getBytesTotal(); }
  207.     // Name:        getKSize: Gesamtanzahl der Kilobytes der zu ladenden Datei
  208.     // Parameter:   keine Parameter
  209.     // Allgemeines: Funktion gibt einen gerundeten Wert zurück, die Byteanzahl bezieht sich auf das temporäre
  210.     //        Objekt "o", in das prinzipiell geladen wird.
  211.     this.getKSize=function() { return Math.round(this.o.getBytesTotal()/1024); }
  212.     // Name:        getPercent: Gibt zurück wieviel Prozent der zu ladenden Datei bereits geladen wurden.
  213.     // Parameter:   keine Parameter
  214.     // Allgemeines: Funktion gibt einen gerundeten Wert zurück, die Prozentzahl bezieht sich auf das temporäre
  215.     //        Objekt "o", in das prinzipiell geladen wird.
  216.     this.getPercent=function() {
  217.             var t=Math.round(this.o.getBytesLoaded()*100/this.o.getBytesTotal());
  218.             if(Number(this.getSize())>4) {
  219.                 return t;
  220.             } else {
  221.                 return 0;
  222.             }
  223.         }
  224.     // Name:        getKBytes:  bereits geladene Kilobyteanzahl des zu ladenden Objektes
  225.     // Parameter:   keine Parameter
  226.     // Allgemeines: Funktion gibt einen gerundeten Wert zurück, die Byteanzahl bezieht sich auf das temporäre
  227.     //        Objekt "o", in das prinzipiell geladen wird.
  228.     this.getKBytes=function () { return Math.round(this.o.getBytesLoaded()/1024); }
  229.     // Name:        getLeftPercent: Gibt zurück wieviel Prozent der zu ladenden Datei noch fehlen
  230.     // Parameter:   keine Parameter
  231.     // Allgemeines: Funktion gibt einen gerundeten Wert zurück, die Prozentzahl bezieht sich auf das temporäre
  232.     //        Objekt "o", in das prinzipiell geladen wird.
  233.     this.getLeftPercent=function () { return Math.round(100-this.getPercent()); }
  234.     // Name:        isComplete: Prüft ob die zu ladende Datei komplett eingeladen wurde
  235.     // Parameter:   keine Paramerter
  236.     // Allgemeines: Gibt bei fertigem Ladeprozess ein true zurück, ansonsten false
  237.     this.isComplete=function() { if(this.getPercent()===100) { return true; } else { return false; } }
  238.     // Name:        onComplete: Wird aufgerufen wenn die zu ladende Datei fertig geladen wurde
  239.     // Parameter:   keine Parameter
  240.     // Allgemeines: Ruft eine Funktion auf die ihr zugewiesen wurde, funktioniert wie bei xml-obj und loadVars-obj
  241.     // Zusatzinfo:  Diese Funktion sieht wie folgt aus. Object.onComplete=function() { ...} , bei fertig geladenen Zustand
  242.     //        wird die auf der rechten Seite def. Funktion aufgerufen und zwar durch eine BroadcastMessage, wichtig
  243.     //        ist noch das diese Funktion keine Parameter erwartet, dass heißt das auch so ein Aufruf möglich wäre.
  244.     //        Object.onComplete=meineGeladeneFunktion;
  245.     //        meineGeladeneFunktion=function() {
  246.     //          .... ;
  247.     //          .... ;
  248.     //        }
  249. }
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 11:36   #8 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
^^
Dies ist der momentane Stand. JPG und SWF Methode habe ich auch schon, die ist aber noch zu buggy.

Ich hoff man versteht das Prinzip.

Aja Testaufruf geht z.B.: so

ActionScript:
  1. my_preloader= new Preloader_Class();
  2. my_preloader.load("test_beta.mp3");
  3.  
  4. my_preloader.onComplete=function () {
  5.     trace("Anzahl der geladenen Bytes: "+my_preloader.getBytes());
  6.     trace("Anzahl der gesamten Bytes: "+my_preloader.getSize());
  7.     trace("Größe der Datei in KB: "+my_preloader.getKSize());
  8.     trace("bereits geladene Prozent: "+my_preloader.getPercent());
  9.     trace("bereits geladene Kilobytes: "+my_preloader.getKBytes());
  10.     trace("Anzahl Prozent die noch zu laden sind: "+my_preloader.getLeftPercent());
  11.     trace("Gibt an ob die Datei bereits vollständig geladen wurde: "+my_preloader.isComplete());
  12. }

mfg eliias
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 08-11-2003, 13:17   #9 (permalink)
[Ernst Reiter]
 
Benutzerbild von Scrawer
 
Registriert seit: Jul 2001
Ort: austria
Beiträge: 3.691
also... ich hätte da nun einige Punkte zu diskutieren.. aber kommen wir zuerst zum Hauptproblem....

mal abgesehen davon das es hier null sinn macht mit broadcast zu arbeiten... es ist wie mit Kanonen auf Vögel zu schießen
da es ja immer nur eine onComplete Methode gibt.. du kannst alles rauslöschen und gleich machen statt
path.broadcastMessage('onComplete','datei geladen');
this.onComplete('datei geladen'); da du die Methode ja in die Instanz schreibst..
letzt endlich hast aber ein Ablauf Problem... da es zu dem Zeitpunkt wo addListener aufgerufen wird um die Methoden
zu registrieren die onComplete Methode noch gar nicht im Object (Instanz) existiert.. sondern erst nacher hinzugefügt wird...
mach mal
ActionScript:
  1. my_preloader= new Preloader_Class();
  2. my_preloader.onComplete=function ()
  3. {
  4.         trace("Anzahl der geladenen Bytes: "+my_preloader.getBytes());
  5.         trace("Anzahl der gesamten Bytes: "+my_preloader.getSize());
  6.         trace("Größe der Datei in KB: "+my_preloader.getKSize());
  7.         trace("bereits geladene Prozent: "+my_preloader.getPercent());
  8.         trace("bereits geladene Kilobytes: "+my_preloader.getKBytes());
  9.         trace("Anzahl Prozent die noch zu laden sind: "+my_preloader.getLeftPercent());
  10.         trace("Gibt an ob die Datei bereits vollständig geladen wurde: "+my_preloader.isComplete());
  11. }
  12.  
  13. my_preloader.load("test_beta.mp3");
wichtig dass load nach dem onComplete anzusetzen... das Problem entsteht halt nur durch deine sehr kreuz und quer Struktur....
und dem zweckentfremden einiger functionen wie broadcaster
weiteres ist es sehr unschön alle Methoden der Klasse direkt in den Constructor zu schreiben.... mit this.methode = function......
richtig wäre schön mit prototype.....
es ist zwar so... wenn du nur eine Instanz der klasse anlegst... macht es keinengroßen unterschied..
jedoch wenn es mehrere Instanzen der klasse geben sollte.. ist es sehr schlecht.. da in jede Instanz die Methoden
voll reingeschrieben werden und keine klassische Vererbung auf die elternklasse stattfindet.. was denn arbeitspeicher
voll in die höhe treiben würde mit jeder Instanz...
und je nach dem mal schnell denn Browser crash verursacht
__________________
Das Gesetz des Lebens liegt im Notwendigen. Der Reiz des Lebens liegt im Überflüssigen
m.f.g Scrawer (www.thinkspace.at)

Geändert von Scrawer (08-11-2003 um 13:18 Uhr)
Scrawer ist offline   Mit Zitat antworten
Alt 10-11-2003, 15:07   #10 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
tjo.. schaut so aus, als sollte ich noch einmal von vorne weg anfangen das ding schön umzubauen.

Hm..prototype ist klar...
das mit load muss ich gleich probieren, hat mich nur gewundert wieso das es mei txt und xml funzt.

das broadcaster keinen sinn macht kapier ich jetzt endlich auch.

thx für die schöne ohrfeige

mfg eliias
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 10-11-2003, 20:11   #11 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
besser ?

ActionScript:
  1. // Autor:         Hannes Moser
  2. // Kontakt:   [email]hannes@impossiblearts.com[/email]
  3. // Version:   0.20 beta, für AS 1.0 nicht AS 2.0 kompatibel
  4. // Allgemeines:  Parameter die in eckigen Klammern stehen sind optional
  5. //          Es sind nur Dateinamen mit den Endungen .xml, .txt, .jpg, .swf, .mp3 erlaubt, nicht .jpeg, .css oder .html, etc.
  6. // Referenz:        obj.load();  --> lädt beliebige Datei [empfohlen für alle Einstellungen, ausdokumentiert]
  7. //          obj.getBytes(); --> gibt die bereits geladene Dateigröße in Bytes zurück
  8. //          obj.getKBytes(); --> gibt die bereits geladene Dateigröße ind Kilobytes zurück
  9. //          obj.getSize(); --> gibt die Gesamtgröße in Bytes zurück
  10. //          obj.getKsize(); --> gibt die Gesamtgröße in KBytes zurück
  11. //          obj.getPercent(); --> gibt die bereits geladene Prozentanzahl zurück
  12. //          obj.getLeftPercent(); --> gibt die Anzahl an Prozent zurück die noch geladen werden muss
  13. // Bemerkungen:  Der Autor dieser Klasse ist nicht verantwortlich für ev. Schäden oder Datenverlust die durch diese
  14. //          Klasse auftreten können. Dies ist ein Open-Source Projekt, die Verwendung für kommerzielle und
  15. //          private Zwecke ist bis auf Widerruf gestattet. Falls jemand vorhat diesen Code zu verwenden würde
  16. //          ich mich freuen wenn ihr mir eine E-Mail schreibt damit ich sehe was ihr daraus gemacht habt.
  17.  
  18. // prototypes
  19. Array.prototype.checkContent=function(checkVariable) {
  20.     for(var i=0;i<this.length;i++) {
  21.         switch(checkVariable) {
  22.             case this[i]:
  23.                 return 1;
  24.                 break;
  25.             default:
  26.                 break;
  27.         }
  28.     }
  29.     return 0;
  30. }
  31. Object.prototype.eventCaller=function(o) {
  32.     o.onLoad=function(o){
  33.         this.onComplete();
  34.     }
  35. }
  36. // Statistik und Auswertungs-Methoden
  37. Object.prototype.getPercent=function() {
  38.     var bl=this.getBytesLoaded();
  39.     var tb=this.getBytesLoaded();
  40.     return Math.round(bl*100/tb);
  41. }
  42. Object.prototype.getPercentLeft=function() {
  43.     var bl=this.getBytesLoaded();
  44.     var tb=this.getBytesLoaded();
  45.     return 100-Math.round(bl*100/tb);
  46. }
  47. Object.prototype.getLoadedBytes=function() {
  48.     return this.getBytesLoaded();
  49. }
  50. Object.prototype.getLoadedBytesLeft=function() {
  51.     return this.getBytesTotal()-this.getBytesLoaded();
  52. }
  53. Object.prototype.getTotalBytes=function() {
  54.     return this.getBytesTotal();
  55. }
  56. Object.prototype.getLoadedKBytes=function() {
  57.     return Math.round(this.getBytesLoaded()/1024);
  58. }
  59. Object.prototype.getLoadedKBytesLeft=function() {
  60.     return Math.round((this.getBytesTotal()-this.getBytesLoaded())/1024);
  61. }
  62. Object.prototype.getTotalKBytes=function() {
  63.     return Math.round(this.getBytesTotal()/1024);
  64. }
  65. // load-Methoden
  66. XML.prototype.loadXML=function(dateiname,o) {
  67.     if(o instanceof XML) {
  68.         o.ignoreWhite=1;
  69.         o.eventCaller(o);
  70.         o.load(dateiname);
  71.     } else {
  72.         return 0;
  73.     }
  74. }
  75. LoadVars.prototype.loadTXT=function(dateiname,o) {
  76.     if(o instanceof LoadVars) {
  77.         o.eventCaller(o);
  78.         o.load(dateiname);
  79.     } else {
  80.         return 0;
  81.     }
  82. }
  83. Sound.prototype.loadMP3=function(dateiname,o) {
  84.     if(o instanceof Sound) {
  85.         o.eventCaller(o);
  86.         o.loadSound(dateiname,0);
  87.     } else {
  88.         return 0;
  89.     }
  90. }
  91. Sound.prototype.loadSMP3=function(dateiname,o) {
  92.     if(o instanceof Sound) {
  93.         o.eventCaller(o);
  94.         o.loadSound(dateiname,1);
  95.     } else {
  96.         return 0;
  97.     }
  98. }
  99. // load-method
  100. Object.prototype.loadFile=function(dateiname) {
  101.     // Instanzreferenz
  102.     var o=this;
  103.     // Instanzvariablen;
  104.     var dateiname=dateiname;
  105.     this.timestamp=getTimer();
  106.     // Erlaubte Dateiendungen und Dateitypen
  107.     var allowedTypes=["xml","txt","jpg","swf","jpeg","mp3","smp3"];
  108.     // Methodenfunktionen
  109.     var findType=function(dateiname) {
  110.         var tmpSpeicher=new Array();
  111.         tmpSpeicher=dateiname.split(".");
  112.         return tmpSpeicher[tmpSpeicher.length-1];
  113.     }
  114.     var checkType=function(fileType) {
  115.         if(allowedTypes.checkContent(fileType)) {
  116.             return 1;
  117.         } else {
  118.             return 0;
  119.         }
  120.     }
  121.     var startLoading=function(dateiname,dateiTyp) {
  122.         for(var i=0;i<allowedTypes.length;i++) {
  123.             if(dateiTyp==allowedTypes[i]) {
  124.                 var functionToCall=eval("o.load"+dateiTyp.toUpperCase());
  125.                 functionToCall.call(o,dateiname,o);
  126.             }
  127.         }
  128.     }
  129.     // Dateityp bestimmen
  130.     var dateiTyp=findType(dateiname);
  131.     // Überprüfung ob Dateiname korrekt
  132.     switch(checkType(dateiTyp)) {
  133.         case 1:
  134.             startLoading(dateiname,dateiTyp);
  135.             break;
  136.         case 0:
  137.             return 0;
  138.             break;
  139.         default:
  140.             return 0;
  141.     }
  142. }
  143. // Test
  144. test=new MovieClip();
  145. test.onComplete=function() {
  146.     trace("1.) Prozent die bereits geladen wurden: " + this.getPercent());
  147.     trace("2.) Prozent die noch zu laden sind: " + this.getPercentLeft());
  148.     trace("3.) bereits geladene Bytes: " + this.getLoadedBytes());
  149.     trace("4.) noch zu ladende Bytes: " + this.getLoadedBytesLeft());
  150.     trace("5.) Gesamtanzahl Bytes: " + this.getTotalBytes());
  151.     trace("6.) bereits geladene Kilobytes: "this.getLoadedKBytes());
  152.     trace("7.) noch zu ladende Kilobytes: "this.getLoadedKBytesLeft());
  153.     trace("8.) Gesamtanzahl Kilobytes: " + this.getTotalKBytes());
  154. }
  155. test.loadFile("test_beta.swf");
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 11-11-2003, 18:31   #12 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
ich hab da noch eine frage, wie kann ich es schaffen einen movieclip eine funktion aufrufen zu lassen.

hab nämlich die movieclip-klasse um eine methode erweitert, die wird aber außerhalb der klasse, sprich erst beim aufruf definiert.

ActionScript:
  1. movieclip.onStart=function() {
  2.  ...
  3. }
  4. movieclip.method();

wenn ich nämlich

ActionScript:
  1. in der methode so aufrufe
  2. this.onStart();

gehts ned.

bitte wenn mir da jemand einen tip geben könnte

mfg eliias
__________________
Blog
Ace of Mace
eliias ist offline   Mit Zitat antworten
Alt 11-11-2003, 19:12   #13 (permalink)
Addicted to Flas
 
Benutzerbild von eliias
 
Registriert seit: Sep 2002
Ort: Salzburg/Austria
Beiträge: 335
ActionScript:
  1. stop();
  2. // Autor:         Hannes Moser
  3. // Kontakt:   [email]hannes@impossiblearts.com[/email]
  4. // Version:   0.20 beta, für AS 1.0 nicht AS 2.0 kompatibel
  5. // Allgemeines:  Parameter die in eckigen Klammern stehen sind optional
  6. //          Es sind nur Dateinamen mit den Endungen .xml, .txt, .jpg, .swf, .mp3 erlaubt, nicht .jpeg, .css oder .html, etc.
  7. // Referenz:        obj.loadFile();  --> lädt beliebige Datei [empfohlen für alle Einstellungen, ausdokumentiert]
  8. // Bemerkungen:  Der Autor dieser Klasse ist nicht verantwortlich für ev. Schäden oder Datenverlust die durch diese
  9. //          Klasse auftreten können. Dies ist ein Open-Source Projekt, die Verwendung für kommerzielle und
  10. //          private Zwecke ist bis auf Widerruf gestattet. Falls jemand vorhat diesen Code zu verwenden würde
  11. //          ich mich freuen wenn ihr mir eine E-Mail schreibt damit ich sehe was ihr daraus gemacht habt.
  12.  
  13. // prototypes
  14. Array.prototype.checkContent=function(checkVariable) {
  15.     for(var i=0;i<this.length;i++) {
  16.         switch(checkVariable) {
  17.             case this[i]:
  18.                 return 1;
  19.                 break;
  20.             default:
  21.                 break;
  22.         }
  23.     }
  24.     return 0;
  25. }
  26. Object.prototype.eventCaller=function(o) {
  27.     o.onLoad=function(o){
  28.         this.onComplete();
  29.     }
  30. }
  31. MovieClip.prototype.movieClipEventCaller=function(o) {
  32.     var INTERVAL=function(o) {
  33.         if(o.getPercent()===100) {
  34.             this.onComplete();
  35.             clearInterval(INTERVAL_ID);
  36.         }
  37.     }
  38.     var INTERVAL_ID=setInterval(INTERVAL,1,o);
  39. }
  40. // Statistik und Auswertungs-Methoden
  41. Object.prototype.getPercent=function() {
  42.     var bl=this.getBytesLoaded();
  43.     var tb=this.getBytesLoaded();
  44.     return Math.round(bl*100/tb);
  45. }
  46. Object.prototype.getPercentLeft=function() {
  47.     var bl=this.getBytesLoaded();
  48.     var tb=this.getBytesLoaded();
  49.     return 100-Math.round(bl*100/tb);
  50. }
  51. Object.prototype.getLoadedBytes=function() {
  52.     return this.getBytesLoaded();
  53. }
  54. Object.prototype.getLoadedBytesLeft=function() {
  55.     return this.getBytesTotal()-this.getBytesLoaded();
  56. }
  57. Object.prototype.getTotalBytes=function() {
  58.     return this.getBytesTotal();
  59. }
  60. Object.prototype.getLoadedKBytes=function() {
  61.     return Math.round(this.getBytesLoaded()/1024);
  62. }
  63. Object.prototype.getLoadedKBytesLeft=function() {
  64.     return Math.round((this.getBytesTotal()-this.getBytesLoaded())/1024);
  65. }
  66. Object.prototype.getTotalKBytes=function() {
  67.     return Math.round(this.getBytesTotal()/1024);
  68. }
  69. // load-Methoden
  70. XML.prototype.loadXML=function(dateiname,o) {
  71.     if(o instanceof XML) {
  72.         o.ignoreWhite=1;
  73.         o.eventCaller(o);
  74.         o.load(dateiname);
  75.     } else {
  76.         return 0;
  77.     }
  78. }
  79. LoadVars.prototype.loadTXT=function(dateiname,o) {
  80.     if(o instanceof LoadVars) {
  81.         o.eventCaller(o);
  82.         o.load(dateiname);
  83.     } else {
  84.         return 0;
  85.     }
  86. }
  87. Sound.prototype.loadMP3=function(dateiname,o) {
  88.     if(o instanceof Sound) {
  89.         o.eventCaller(o);
  90.         o.loadSound(dateiname,0);
  91.     } else {
  92.         return 0;
  93.     }
  94. }
  95. Sound.prototype.loadSMP3=function(dateiname,o) {
  96.     if(o instanceof Sound) {
  97.         o.eventCaller(o);
  98.         o.loadSound(dateiname,1);
  99.     } else {
  100.         return 0;
  101.     }
  102. }
  103. MovieClip.prototype.loadSWF=function(dateiname,o) {
  104.     if(o instanceof MovieClip) {
  105.         o.loadMovie(dateiname,2);
  106.         o.movieClipEventCaller(o);
  107.     }
  108. }
  109. MovieClip.prototype.loadJPG=function(dateiname,o) {
  110.     if(o instanceof MovieClip) {
  111.         o.loadMovie(dateiname,3);
  112.         o.movieClipEventCaller(o);
  113.     }
  114. }
  115. MovieClip.prototype.loadJPEG=function(dateiname,o) {
  116.     if(o instanceof MovieClip) {
  117.         o.loadMovie(dateiname,4);
  118.         o.movieClipEventCaller(o);
  119.     }
  120. }
  121. // load-method
  122. Object.prototype.loadFile=function(dateiname) {
  123.     // Instanzreferenz
  124.     var o=this;
  125.     // Instanzvariablen;
  126.     var dateiname=dateiname;
  127.     this.timestamp=getTimer();
  128.     // Erlaubte Dateiendungen und Dateitypen
  129.     var allowedTypes=["xml","txt","jpg","swf","jpeg","mp3","smp3"];
  130.     // Methodenfunktionen
  131.     var findType=function(dateiname) {
  132.         var tmpSpeicher=new Array();
  133.         tmpSpeicher=dateiname.split(".");
  134.         return tmpSpeicher[tmpSpeicher.length-1];
  135.     }
  136.     var checkType=function(fileType) {
  137.         if(allowedTypes.checkContent(fileType)) {
  138.             return 1;
  139.         } else {
  140.             return 0;
  141.         }
  142.     }
  143.     var startLoading=function(dateiname,dateiTyp) {
  144.         for(var i=0;i<allowedTypes.length;i++) {
  145.             if(dateiTyp==allowedTypes[i]) {
  146.                 var functionToCall=eval("o.load"+dateiTyp.toUpperCase());
  147.                 functionToCall.call(o,dateiname,o);
  148.             }
  149.         }
  150.     }
  151.     // Dateityp bestimmen
  152.     var dateiTyp=findType(dateiname);
  153.     // Überprüfung ob Dateiname korrekt
  154.     switch(checkType(dateiTyp)) {
  155.         case 1:
  156.             startLoading(dateiname,dateiTyp);
  157.             break;
  158.         case 0:
  159.             return 0;
  160.             break;
  161.         default:
  162.             return 0;
  163.     }
  164. }
  165. // Test
  166. _root.createEmptyMovieClip("test",100);
  167. //test=new XML();
  168. test.onComplete=function() {
  169.     trace("1.) Prozent die bereits geladen wurden: " + this.getPercent());
  170.     trace("2.) Prozent die noch zu laden sind: " + this.getPercentLeft());
  171.     trace("3.) bereits geladene Bytes: " + this.getLoadedBytes());
  172.     trace("4.) noch zu ladende Bytes: " + this.getLoadedBytesLeft());
  173.     trace("5.) Gesamtanzahl Bytes: " + this.getTotalBytes());
  174.     trace("6.) bereits geladene Kilobytes: "this.getLoadedKBytes());
  175.     trace("7.) noch zu ladende Kilobytes: "this.getLoadedKBytesLeft());
  176.     trace("8.) Gesamtanzahl Kilobytes: " + this.getTotalKBytes());
  177. }
  178. test.loadFile("test_beta.jpg");
__________________
Blog
Ace of Mace
eliias 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 15:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele