Leistungsoptimierung für die ADOBE FLASH-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
LEISTUNGSOPTIMIERUNG FÜR DIE <strong>FLASH</strong>-<strong>PLATTFORM</strong><br />
Renderleistung<br />
Eigenständige Pixel Bender-Shader<br />
Mit der ShaderJob-Klasse können Sie ein Bild oder einen Satz von Daten durch einen Pixel Bender-Shader<br />
ausführen und auf <strong>die</strong> unformatierten Ergebnisdaten zugreifen. Standardmäßig wird der Shader asynchron<br />
ausgeführt, wenn Sie <strong>die</strong> ShaderJob.start()-Methode aufrufen. Die Ausführung erfolgt im Hintergrund; <strong>die</strong><br />
Laufzeitbildschleife wird nicht verwendet. Um <strong>die</strong> synchrone Ausführung des ShaderJob-Objekts zu erzwingen<br />
(was nicht empfohlen wird), übergeben Sie den Wert true an den ersten Parameter der start()-Methode.<br />
Neben <strong>die</strong>sen integrierten Techniken zum asynchronen Ausführen von Code können Sie Ihren eigenen Code auch so<br />
strukturieren, dass er asynchron statt synchron ausgeführt wird. Wenn Sie Code schreiben, der eine potenziell lang<br />
dauernde Aufgabe ausführen soll, können Sie den Code so strukturieren, dass er in Teilen ausgeführt wird. Indem Sie<br />
den Code aufteilen, ermöglichen Sie der Laufzeitumgebung, <strong>die</strong> Rendervorgänge zwischen der Ausführung von<br />
Codeblöcken auszuführen, sodass es seltener zu Renderingproblemen kommt.<br />
Nachstehend sind verschiedene Techniken zum Aufteilen des Codes aufgeführt. Der Grundgedanke hinter <strong>die</strong>sen<br />
Techniken ist es, den Code so zu schreiben, dass jeweils nur ein Teil der Aufgabe ausgeführt wird. Sie verfolgen, was<br />
der Code tut und wo er seine Arbeit unterbricht. Sie verwenden einen Mechanismus wie ein Timer-Objekt, um<br />
wiederholt zu prüfen, ob Aufgaben verbleiben, und um zusätzliche Aufgaben portionsweise auszuführen, bis <strong>die</strong><br />
Arbeit abgeschlossen ist.<br />
Es gibt einige bewährte Muster <strong>für</strong> <strong>die</strong> Strukturierung von Code, um Arbeit auf <strong>die</strong>se Weise aufzuteilen. In den<br />
folgenden Artikeln und Codebibliotheken werden <strong>die</strong>se Muster beschrieben und es wird Code bereitgestellt, der Ihnen<br />
bei der Implementierung der Muster in Ihre Anwendungen hilft:<br />
Asynchronous ActionScript Execution (Artikel von Trevor McCauley mit weiteren Hintergrundinformationen<br />
sowie verschiedenen Implementierungsbeispielen)<br />
Parsing & Rendering Lots of Data in Flash Player (Artikel von Jesse Warden mit Hintergrundinformationen und<br />
Beispielen <strong>für</strong> zwei Ansätze: „builder pattern“ und „green threads“)<br />
Green Threads (Artikel von Drew Cummins, in dem <strong>die</strong> „green threads“-Technik beschrieben wird, mit<br />
Beispielquellcode)<br />
greenthreads (Open-Source-Codebibliothek von Charlie Hubbard zur Implementierung von „green threads“ in<br />
ActionScript. Weitere Informationen finden Sie unter greenthreads Quick Start.)<br />
Threads in ActionScript 3 unter http://www.adobe.com/go/learn_fp_as3_threads_de (Artikel von Alex Harui mit<br />
einer Beispielimplementierung der „Pseudo-Threading“-Technik)<br />
Transparente Fenster<br />
Ziehen Sie bei AIR-Desktopanwendungen <strong>die</strong> Verwendung eines undurchsichtigen rechteckigen Anwendungsfensters<br />
anstelle eines durchsichtigen Fensters in Betracht.<br />
Um ein undurchsichtiges Fenster zu verwenden, legen Sie <strong>für</strong> das Anfangsfenster der AIR-Desktopanwendung in der<br />
Anwendungsdeskriptor-XML-Datei den folgenden Wert fest:<br />
<br />
false<br />
<br />
Für Fenster, <strong>die</strong> vom Anwendungscode erstellt werden, erstellen Sie ein NativeWindowInitOptions-Objekt mit der<br />
transparent-Eigenschaft auf false (Standardeinstellung). Übergeben Sie es an den NativeWindow-Konstruktor,<br />
während Sie das NativeWindow-Objekt erstellen:<br />
Letzte Aktualisierung 9.5.2012<br />
78