Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-05-2006, 21:21   #1 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Performance Problem

Hallo zusammen,

kann mir zufällig irgendjemand erklären, warum Flash bei der Erstellung von (vielen) MCs zur Laufzeit derartige Performance-Verluste erfährt?

Zur Verdeutlichung hier ein kleines Test-Script:
ActionScript:
  1. // Quadrat erstellen
  2. _createSquare = function (dimension, depth, x, y) {
  3.     newSquare = createEmptyMovieClip("i"+depth, depth);
  4.     newSquare.lineStyle(0, 0x000000, 100);
  5.     newSquare.beginFill(0x666666, 100);
  6.     newSquare.moveTo(x, y);
  7.     newSquare.lineTo(x-(-dimension), y);
  8.     newSquare.lineTo(x-(-dimension), y-(-dimension));
  9.     newSquare.lineTo(x, y-(-dimension));
  10.     newSquare.lineTo(x, y);
  11.     newSquare.endFill();
  12.     newSquare.sID = depth;
  13. }
  14. // Zufallszahl generieren
  15. _rndNumOffsets = function(startValue, endValue) {
  16.     if (isNaN(startValue) == 1 || isNaN(endValue) == 1 || endValue-startValue < 0) {
  17.         return false;
  18.     }
  19.     var calculatedNumber = (Math.random()*((endValue-(-1))-startValue))-(-startValue);
  20.     calculatedNumber = Math.floor(calculatedNumber);
  21.     return calculatedNumber;
  22. }
  23. // Starttiefe
  24. var actualDepth = 0;
  25. // Textfeld
  26. createTextField("count", 99999, 370, 1);
  27. this.createTextField("count", 99999, 370, 10, 30, 20);
  28. count.multiline = true;
  29. count.border = true;
  30. count.background = 0xFFFFFF;
  31. count.wordWrap = true;
  32. var my_fmt = new TextFormat();
  33. my_fmt.font = "_sans";
  34. my_fmt.size = 8;
  35. my_fmt.color = 0xFF0000;
  36. my_fmt.underline = false;
  37. count.text = "999";
  38. count.setTextFormat(my_fmt);
  39. createEmptyMovieClip("showDelay", 100000);
  40. showDelay.lineStyle(3, 0xFF0000, 100);
  41. showDelay.moveTo(0, 0);
  42. // Zähler
  43. var a = 0;
  44. onEnterFrame = function(){
  45.     var numberOf = 25;
  46.     for (var i = 0; i < numberOf; i++) {
  47.         dimension = _rndNumOffsets(10, 30);
  48.         x = _rndNumOffsets(10, 370);
  49.         y = _rndNumOffsets(10, 270);
  50.         _createSquare(dimension, ++actualDepth, x, y);
  51.     }
  52.     count.text = Math.abs(actualDepth);
  53.     (actualDepth)%500 == 0 ? showDelay.lineStyle(3, 0x000000, 100) : showDelay.lineStyle(3, 0xFF0000, 100);
  54.     showDelay.lineTo(a++, getTimer());
  55.     showDelay._width = 400;
  56.     showDelay._height = 300;
  57. }
Die rote Linie soll den Geschwindigkeitsverlust darstellen - das Textfeld zeigt die Anzahl der erstellten MCs.
Bei mir kommt der Einbruch so bei ca. 2000 MCs.
Alles weitere würde ich als nicht performant bezeichnen... ;-(
Wäre der Flash-Player agiler, wenn man 2000 MCs innerhalb der Datei 'händisch' anlegen würde???
Weiss das jemand???

HILFE!!!
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 22-05-2006, 21:38   #2 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Zitat:
Bei mir kommt der Einbruch so bei ca. 2000 MCs.
Ja, ist schon lange Feierabend. Beschleunigen kannst du das mit:

Code:
newSquare.cacheAsBitmap = true;
Trotzdem, 2000 MovieClips ist definitiv viel zu viel.
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:40   #3 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
gut, das bringt etwas Performance, aber trotzdem wüsste ich gerne, ob die Performance bei statischen (sprich in der Flash IDE angelegten) MCs besser wäre oder nicht...
(...und zwar ohne 300 MCs von Hand zu produzieren...) ;-)
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:46   #4 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Für 300 Stück brauchst du doch nur so 9 Schritte. Immer die aktuelle Anzahl kopieren und wieder einfügen^^
sebastian ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:48   #5 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Zitat:
aber trotzdem wüsste ich gerne, ob die Performance bei statischen (sprich in der Flash IDE angelegten) MCs besser wäre oder nicht
Ich habe das mal mit 100 MovieClips getestet. Es ist gleich schnell.
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:49   #6 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Also bei 300 hatte ich auch noch keine Probleme. Aber bei ein paar tausend wirds schon heftig. Da hängt Flash bei mir und auch beim Veröffentlichen dauert es seine Zeit und die ersten Sekunden vom Movie sind auch nicht sehr schnell, ganz im Gegenteil
sebastian ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:55   #7 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Damit könnte ich leben...

Aber wie läuft das SWF danach...
Ich müsste ca. 3000 MCs mit RollOver (und akzeptabler Performance) generieren...
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 23-05-2006, 08:57   #8 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Wenn ich das richtige beobachte und vermute gibt es nur beim ersten generieren Probleme. Wahrscheinlich werden alle MC Positionen neu berechnet, wenn einer hinzukommt - das würde das ganze erklären.

Aber wie gesagt, probier es selbst aus und beurteile es. Exponentielles Wachstum ist was feines und ich hab in wenigen Sekunden 3000 MCs auf der Bühne
sebastian ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:02   #9 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Zitat:
Ich müsste ca. 3000 MCs mit RollOver (und akzeptabler Performance) generieren...
Werden die auf einem Raster angelegt sein ? - Dann sollte man vielleicht andere Techniken in Betracht ziehen (Tilemaps).
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:07   #10 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
Nein, eigentlich sollten das dynamische Pfadangaben sein, die per XML geladen werden...
Aber notfalls produziere ich das Zeug auch von Hand...
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:16   #11 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Habs eben mal ausprobiert (waren aber wohl mehr als 3000) und da war es schon heftig. Hatte alles sehr verzögert reagiert.
sebastian ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:24   #12 (permalink)
Geomatik-Flasher
 
Benutzerbild von Totty
 
Registriert seit: Aug 2002
Ort: Karlsruhe
Beiträge: 162
wie hast Du das ausprobiert?
... mit dynamisch erzeugten MCs?
Wahrscheinlich, denn von Hand hättest Du wohl kaum 3000 so schnell anlegen können...
__________________
Where in this small-thinking world can I find a longitude without a platitude?
Totty ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:26   #13 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Per Hand. Wie schon mehrmals erwähnt dauert das vielleicht 5 Sekunden?!

Edit: Hab die mal zählen lassen und bei 3000 ist es noch in Ordnung. Erst bei 6-7k wird langsamer

Geändert von sebastian (23-05-2006 um 09:30 Uhr)
sebastian ist offline   Mit Zitat antworten
Alt 23-05-2006, 09:32   #14 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Ich kenn das auch ... ich hab mal für ein Browserspiel eine dynamische Karte gemacht die auch an ihre Grenzen gestossen ist was die Zahl der MCs angeht.

cacheAsBitmap = true; kannte ich noch nicht, aber ich bin auch über jeden weiteren Workaround froh, nur aus INteresse für zukünftige Projekte
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt 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 00:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele