30.07.2012 Aufrufe

Leistungsoptimierung für die ADOBE FLASH-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

LEISTUNGSOPTIMIERUNG FÜR DIE <strong>FLASH</strong>-<strong>PLATTFORM</strong><br />

Minimieren der CPU-Auslastung<br />

// Use a low frame rate for the application<br />

stage.frameRate = 10;<br />

// Choose one update per second<br />

var updateInterval:int = 1000;<br />

var myTimer:Timer = new Timer(updateInterval,0);<br />

myTimer.start();<br />

myTimer.addEventListener( TimerEvent.TIMER, updateControls );<br />

function updateControls( e:TimerEvent ):void<br />

{<br />

// Update controls here<br />

// Force the controls to be updated on screen<br />

e.updateAfterEvent();<br />

}<br />

Durch Aufruf der updateAfterEvent()-Methode ändert sich <strong>die</strong> Bildrate nicht. Die Methode zwingt <strong>die</strong><br />

Laufzeitumgebung nur, den Inhalt auf dem Bildschirm zu aktualisieren, der sich geändert hat. Die Zeitleiste läuft<br />

immer noch mit einer Bildrate von 10 fps. Beachten Sie, dass Timer und ENTER_FRAME-Ereignisse auf Geräten mit<br />

niedriger Leistung nicht hundertprozentig genau sind, und auch dann nicht, wenn Ereignisprozedurfunktionen<br />

verarbeitungsintensiven Code enthalten. Genau wie <strong>die</strong> Bildrate der SWF-Datei kann auch <strong>die</strong> Aktualisierungsbildrate<br />

des Timers in manchen Situationen variieren.<br />

Halten Sie <strong>die</strong> Anzahl der Timer-Objekte und registrierten enterFrame-Prozeduren in Ihrer Anwendung gering.<br />

In jedem Bild setzt <strong>die</strong> Laufzeitumgebung ein enterFrame-Ereignis an alle Anzeigeobjekte in ihrer Anzeigeliste ab. Sie<br />

können zwar Listener <strong>für</strong> das enterFrame-Ereignis mit mehreren Anzeigeobjekten registrieren, <strong>die</strong>s bedeutet jedoch,<br />

dass in jedem Bild mehr Code ausgeführt wird. Überlegen Sie stattdessen, eine einzelne zentrale enterFrame-<br />

Prozedur zu verwenden, <strong>die</strong> den gesamten Code ausführt, der in jedem Bild ausgeführt werden soll. Dadurch kann<br />

häufig ausgeführter Code einfacher verwaltet werden.<br />

Auf ähnliche Weise entsteht beim Verwenden von Timer-Objekten eine höhere Verarbeitungslast durch das Erstellen<br />

und Absetzen von Ereignissen aus mehreren Timer-Objekten. Wenn unterschiedliche Operationen in verschiedenen<br />

Intervallen ausgelöst werden müssen, kommen folgende Alternativen infrage:<br />

Verwenden Sie möglichst wenige Timer-Objekte und gruppieren Sie Operationen nach der Häufigkeit ihres<br />

Auftretens..<br />

Verwenden Sie zum Beispiel einen Timer <strong>für</strong> häufige Operationen, der alle 100 Millisekunden ausgelöst wird.<br />

Verwenden Sie einen anderen Timer <strong>für</strong> weniger häufige oder Hintergrundoperationen, der alle 2000<br />

Millisekunden ausgelöst wird.<br />

Verwenden Sie ein einzelnes Timer-Objekt und lassen Sie Operationen zu Vielfachen der delay-Eigenschaft des<br />

Timer-Objekts auslösen.<br />

Zum Beispiel könnten Sie einige Operationen haben, <strong>die</strong> alle 100 Millisekunden ausgeführt werden sollen, und<br />

anderen, <strong>die</strong> alle 200 Millisekunden ausgeführt werden sollen. Verwenden Sie in <strong>die</strong>sem Fall ein einzelnes Timer-<br />

Objekt mit einem delay-Wert von 100 Millisekunden. Fügen Sie in der timer-Ereignisprozedur eine bedingte<br />

Anweisung hinzu, <strong>die</strong> <strong>die</strong> 200-Millisekunden-Operation nur jedes zweite Mal ausführt. Diese Vorgehensweise wird<br />

im folgenden Beispiel veranschaulicht:<br />

Letzte Aktualisierung 9.5.2012<br />

35

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!