Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-02-2004, 19:20   #1 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Bewegung während Berechnung

Hallo,

ich muss innerhalb einer onLoad-Anweisung eine größere Berechnung durchführen.
Ich würde gerne eine Animation währenddessen abspielen lassen, damit der User weiss, dass sein Rechner noch lebt, aber das geht nicht!
Sobald die Berechnung beginnt stirbt jede Animation...

Was kann ich dagegen machen?

Ich hbae schon versucht die Animation per loadMovieNum auf einen anderen _level zu laden, aber da macht keinen Unterschied...

Hilfe

Totty
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 26-02-2004, 19:39   #2 (permalink)
anyway
Gast
 
Beiträge: n/a
Hört sich ganz danach an, als hättest Du einen Performancekiller in Deine onLoad-Anweisung geschrieben...Da müsstest Du dann auch versuchen zu optimieren...

btw: wo ist das Skript?
  Mit Zitat antworten
Alt 26-02-2004, 19:53   #3 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Pardon,

hier kommt das Wesentliche:

ActionScript:
  1. _root.myVars.onLoad = function(OK) {
  2.     if(OK) {
  3. // Daten verfügbar machen (aufsplitten)
  4.         _root.tempdaten = this.daten.split("¥");
  5.         _root.zeilen = this.zeilen;
  6.         _root.spalten = this.spalten;
  7. // Neues 2-dimensionales Array generieren
  8.         _root.daten = new Array(this.zeilen);
  9.         for (i=0; i<this.zeilen; i++) {
  10.             _root.daten[i] = new Array(this.spalten);
  11.         }
  12. // Zähler
  13.         a = 0;
  14. // Variable in _root.daten übertragen
  15.         for (i=0; i<this.zeilen; i++) {
  16.             for (j=0; j<this.spalten; j++) {
  17.                 _root.tempdaten2 = _root.tempdaten[a].split("\\'").join("'");
  18.                 _root.daten[i][j] = _root.tempdaten2.split('\\"').join('"');
  19.                 a++;
  20.             }
  21.         }
  22.     }
  23. }


Die Daten die geladen werden sehen ungefähr so aus:

&zeilen=irgendwas&
&spalten=irgendwas&
&daten=irgendwas¥irgendwas&

...und geben ein 2-dimensionales Array in der Größe 14*100 an (so ungefähre Höchstwerte)
Das Splitten dauert auf eine G3 schon ungefähr 15 Sekunden, wenn die Maximalen Ausmaße erreicht werden...
PS: In der Variable daten stehen größtenteils miese Strings, sodass eine solche Datei bis zu 80kb groß sein kann...

Totty
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 26-02-2004, 21:57   #4 (permalink)
anyway
Gast
 
Beiträge: n/a
Mh, ja krass

Wieso splittest Du denn so viel rum? Gibt es keine Möglichkeit, die Datensätze mit weniger Trennzeichen anzulegen?

Ansonsten kann man da nicht wirklich viel an der Geschwindigkeit ändern...Du könntest noch die zweite Schleife mitsamt ihrer inneren in die erste packen - aber sonst...

XML wäre vielleicht die schnellere Alternative..
  Mit Zitat antworten
Alt 26-02-2004, 23:03   #5 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Das mit dem Splitten muss sein, das die Daten über ein weiteres Modul per Copy&Paste aus Excel importiert wurden...

Somit gibt's einige Probleme mit Sonderzeichen, wie z.B. ' oder ", alle anderen konnte ich mit PHP ausschalten...

Totty
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 26-02-2004, 23:32   #6 (permalink)
anyway
Gast
 
Beiträge: n/a
Lass die Stringzerlegung mal ruhig komplett das php machen - zur Not kannst Du die Datensätze ja einmal mit php 'vorformatieren' und alle unnötigen Sonderzeichen vor der Übergabe an Flash eliminieren...

Dürfte um einiges schneller laufen, wenn Flash pro Variable vielleicht nur ein, max. zwei Trennzeichen besitzt.

Oder ne Nachricht einblenden: Bitte warten - Prozessor arbeitet ...
  Mit Zitat antworten
Alt 27-02-2004, 08:10   #7 (permalink)
God made me funky..
 
Registriert seit: Apr 2003
Ort: Bremen
Beiträge: 1.067
Wenn du es partout in Flash machen musst, würde ich das initialisieren das Arrays mit in die zweite Schleife nehmen, spart dir schonmal eine Loop.

ActionScript:
  1. for (i=0; i<this.zeilen; i++) {
  2. _root.daten[i] = [];
  3.                         for (j=0; j<this.spalten; j++) {               
  4.  _root.tempdaten2 = _root.tempdaten[a].split("'").join("'");
  5.                                 _root.daten[i][j] = _root.tempdaten2.split('\"').join('"');
  6.                                 a++;
  7.                         }
  8.                 }

Ansonsten kannst du das auch mit einer guten alten Frameloop oder mit einem setInterval machen, Bau dir eine Funktion die meinetwegen jeweils eine Zeile aufbaut und ruf die auf nem onEnterFrame oder mit einem Intervall auf, das dauert zwar länger, blockt den Movie aber nicht.
__________________
Kunst ist in erster Linie eine Frage der Form und nicht des Inhalts
Paul Rand
e2e4 ist offline   Mit Zitat antworten
Alt 27-02-2004, 13:07   #8 (permalink)
anyway
Gast
 
Beiträge: n/a
Und hier der Vorschlag von e2e4 nochmal verskriptet:

ActionScript:
  1. _root.myVars.onLoad = function(OK) {
  2.     if (OK) {
  3.         // Daten verfügbar machen (aufsplitten)
  4.         _root.tempdaten = this.daten.split("¥");
  5.         _root.zeilen = this.zeilen;
  6.         _root.spalten = this.spalten;
  7.         // Neues 2-dimensionales Array generieren
  8.         _root.daten = new Array(this.zeilen);
  9.         var a = 0, i = 0;
  10.         var itv = setInterval(function () {
  11.             if (i<_root.zeilen) {
  12.                 _root.daten[i++] = new Array(_root.spalten);
  13.                 for (j=0; j<_root.spalten; j++) {
  14.                     _root.tempdaten2 = _root.tempdaten[a++].split("'").join("'");
  15.                     _root.daten[i][j] = _root.tempdaten2.split('\"').join('\"');
  16.                 }
  17.             } else {
  18.                 clearInterval(itv);
  19.             }
  20.         }, 1);
  21.     }
  22. };


...ungetestet - sollte aber klappen...
  Mit Zitat antworten
Alt 27-02-2004, 13:31   #9 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Vielen Dank für die Hilfe,

aber leider bleibt das alte Problem bestehen. Während der Berechnung wird keine Animation fortgeführt.
Das ganze Teil steht einfach nur still da und wartet auf das Ende der Berechnung...

Totty
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 27-02-2004, 13:44   #10 (permalink)
anyway
Gast
 
Beiträge: n/a
aha...dann setz mal die Intervalzeit nach oben (also da wo jetzt innerhalb der klammern des intervals die 1 steht)...

Ansonsten gib mal Probehalber einen Datensatz als txt-Datei her - vielleicht passiert auch irgendwas beim splicen, womit Flash nicht klarkommt...

Ansonsten müsste ein längeres Interval helfen, wie gesagt...
  Mit Zitat antworten
Alt 27-02-2004, 14:28   #11 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
download...Hier mal zum Download...

Also, jetzt habe ich's nochmal genau angeschaut. Es hängt bei
ActionScript:
  1. _root.tempdaten = this.daten.split("¥");
Aber das seht Ihr dann ja auch selber...

Totty
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty 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 20:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele