Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-02-2004, 10:35   #1 (permalink)
Design tut gut...
 
Benutzerbild von Screenshaker
 
Registriert seit: Apr 2003
Ort: Villingen
Beiträge: 98
Performance optimieren - Schleifen stoppen

Unter Sitecheck wurde ich auf die schleche Performance meiner Seite hingewiesen, und darauf, daß ich meine onenterFrame-Schleifen nach Abfrage abschalten soll.

Da mir unter Sitecheck gerade keiner antwortet, und so eine technische Frage eher hierhin gehört, erlaube ich mir mal so ein Cross-posting.

Wer sich die Seite anschauen möchte: Small World Networks ,
und wer den Sitecheck-Post lesen möchte hier lang: zum Sitecheck .

Nun aber zu meiner Frage:
Ich habe im Script nur 2 onenterframes gefunden, die ich nun folgendermassen still gelegt habe.



ActionScript:
  1. delete this.onEnterFrame;

Stimmt das so? Hat glaube ich auch ein wenig die Performance optimiert.

Ich habe da noch andere Abfragen drin die nicht auf onenter Framelaufen. Zum Beispiel die hier.
ActionScript:
  1. {
  2.         if ((_root.aktuell == undefined) & (this._currentframe<this._totalframes)) {
  3.                 play();
  4.         }
  5.         _root.aktuell = this._name;
  6.         if (_root.zusatz == undefined) {
  7.                 loadMovieNum("basic/home.swf", 10);
  8.         } else if (_root.zusatz != "basic/home.swf") {
  9.                 _root.rewind = true;
  10.         }
  11.         _root.zusatz = "basic/home.swf";
  12.        
  13. }
Frägt die auch ständig ab und zerrt so an meinem CPU??? Ist verantwortlich dafür daß die Fenster sich öffnen und schliessen wenn ein anderes geöffnet werden soll. Kann ich die auch irgendwie blockieren?

Und auch dieses Script, das auf den Buttons liegt und dann das Sliden verursacht.
ActionScript:
  1. on (release) {
  2.         if ((_root.aktuell == undefined) & (this._currentframe<this._totalframes)) {
  3.                 play();
  4.         }
  5.         _root.aktuell = this._name;
  6.         if (_root.zusatz == undefined) {
  7.                 loadMovieNum("contact/contact.swf", 10);
  8.         } else if (_root.zusatz != "contact/contact.swf") {
  9.                 _root.rewind = true;
  10.         }
  11.         _root.zusatz = "contact/contact.swf";
  12.         _root.zielX = -590;
  13.         _root.zielY = 490;
  14. }
Ich glaube es liegt eher am ersteren, denn das zweite wird erst ausgeführt auf on(release), oder seh ich das Falsch?

Wenn ich mir die Scripts mal genau ansehe und nachdenke, ist das obere überhaupt so notwendig. Lädt halt den ersten Film rein und setzt die Variable. Wenn die Variable nicht gesetzt ist lädt es die anderen nicht.

Weiß jemand Rat wie ich diese Scripts optimieren kann, daß sie die Performance beflügeln?
Screenshaker ist offline   Mit Zitat antworten
Alt 06-02-2004, 11:46   #2 (permalink)
funkdisziplin
 
Registriert seit: Jul 2003
Beiträge: 2.790
hab deine site angeschaut und getestet -
mit WinXP
Strg+Alt+Entf
öffnet Windows Task-Manager
unter Systemleistung
kannst du die CPU-Auslastung betrachten.

... da müssen noch loops am laufen sein,
meine cpu geht nicht unter 50% auslastung (2,8GHZ)
-das ist nicht gut.

beispiel-loop beenden
ActionScript:
  1. mc.onEnterFrame=function(){
  2.     this._x+=5;
  3.     trace("count");
  4.     if(this._x>200){
  5.         this._x=200
  6. //wenn bedingung erfüllt dann...
  7.         delete this.onEnterFrame
  8.         }
  9.     }

greets ddd
derdiedas ist offline   Mit Zitat antworten
Alt 06-02-2004, 11:51   #3 (permalink)
Design tut gut...
 
Benutzerbild von Screenshaker
 
Registriert seit: Apr 2003
Ort: Villingen
Beiträge: 98
Genau so habe ich es bei meinen 2 onenterFrame-Loops auch gemacht. Die Version ist noch nicht online, aber mein CPU, der bisher 90% Auslastung hatte geht jetzt auf 85% runter.

Deswegen wollte ich auch wissen, ob die anderen if-Abfragen auch etwas mit der CPU-Auslastung zu tun haben.

Danke.
Screenshaker ist offline   Mit Zitat antworten
Alt 06-02-2004, 12:26   #4 (permalink)
funkdisziplin
 
Registriert seit: Jul 2003
Beiträge: 2.790
wenn es keine loops (wenns ständig zwischen mehreren Schlüsselbildern auf der timeline loopt, onEnterFrame, setInterval) sind, dann ist das unwesentlich.
kann aber auch sein dass deine if-bedingung nicht erfüllt wird, das würde ich mal so wie bei mir oben tracen.
derdiedas ist offline   Mit Zitat antworten
Alt 06-02-2004, 12:29   #5 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Der prinzipielle Ansatz onEnterFrames wieder zu löschen ist sicherlich gut. Aber auf deine Seite bezogen würde ich eher auf die große Ebene mit Elementen + _alpha tippen, was die Performance so beeinträchtigt.

Was deinen geposteten Code angeht wird der doch eigentlich nur einmal auf click irgendwohin ausgeführt.

ddd's Beispiel mit der Bewegung frißt eigentlich auch kaum Performance. Es sei denn, das _was_ bewegt wird ist groß und hat _alpha drin.

mfg

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."
r0b ist offline   Mit Zitat antworten
Alt 06-02-2004, 13:10   #6 (permalink)
Design tut gut...
 
Benutzerbild von Screenshaker
 
Registriert seit: Apr 2003
Ort: Villingen
Beiträge: 98
Danke Robert,

Deine Ahnung mit der großen Fläche und dem Alpha scheint sich zu bewahrheiten! Das ist einfach zu viel des Guten für lahme Rechner mit weniger Rechenleistung.

Weniger die Alphas machen mir kummer. Wenn ich die Rauslösche dann ist der CPU noch immer am Dampfen. Es ist einfach die große Fläche, die ich verwende. Ich muss alle Hintergrundelemente rauslöschen, bis sich mein CPU von 90% Auslastung auf 15% beruhigt. (P4 2 Gh)

Das Konzept der Seite steht und kann ich nicht mehr ändern, aber gibt es nicht noch irgendeinen Trick, wie ich das Problem lösen kann, den riesigen Hintergrund habe und trotzdem meinen CPU nicht so auslaste? Verzweifel! Wohl eher nicht, oder???

Weiß jemand Rat?
Screenshaker ist offline   Mit Zitat antworten
Alt 06-02-2004, 13:34   #7 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
Hm...
Das ist jetzt im Nachhinein natürlich etwas schwer da noch zu optimieren. Was vielleicht ein Ansatz wäre, das man die große Ebene in kleine Einheiten ausplittet und diese dann auf _visible = false stellt, wenn sie nicht zu sehen sind.

Also mal als Beispiel eine 9er Aufteilung:

123
456
789

Wenn du 7 siehst, kannst du 1,2,3,6 und 9 ausblenden. Frag' mich jetzt aber bitte nicht, wie man sowas "auf die schnelle" umsetzt. Wäre nur ein Ansatz.

mfg

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."
r0b ist offline   Mit Zitat antworten
Alt 06-02-2004, 13:54   #8 (permalink)
Design tut gut...
 
Benutzerbild von Screenshaker
 
Registriert seit: Apr 2003
Ort: Villingen
Beiträge: 98
Danke für den Tipp. Ich überlege mir mal, ob das irgendwie realisierbar ist. Mal grübeln.
Screenshaker 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