Zwischenspeichern von AnzeigeobjektenFlash Player 9 und höher, Adobe AIR 1.0 und höher Wenn Ihre Entwürfe in Flash umfangreicher werden, z. B. wenn Sie eine Anwendung oder komplexe Animationsskripts entwickeln, müssen Sie Leistung und Optimierung berücksichtigen. Bei statischen Inhalten (wie rechteckigen Shape-Instanzen) nehmen Flash Player und AIR keine Optimierung des Inhalts vor. Wenn Sie die Position des Rechtecks ändern, würde die gesamte Shape-Instanz in Flash Player oder AIR neu gezeichnet werden. Sie können bestimmte Anzeigeobjekte zwischenspeichern, um die Leistung Ihrer SWF-Datei zu verbessern. Das Anzeigeobjekt kann mit einer Oberfläche verglichen werden, die im Prinzip eine Bitmap-Version der Vektordaten der Instanz darstellt. Hierbei handelt es sich um die Daten in der SWF-Datei, die sich voraussichtlich nur wenig ändern werden. Deshalb werden Instanzen, für die das Zwischenspeichern aktiviert ist, beim Abspielen der SWF-Datei nicht kontinuierlich neu gezeichnet, sodass die SWF-Datei schneller gerendert werden kann. Hinweis: Sie können die Vektordaten aktualisieren, wodurch die Oberfläche neu erstellt wird. Deshalb müssen die in der Oberfläche zwischengespeicherten Vektordaten nicht in der gesamten SWF-Datei unverändert bleiben.
Durch das Einstellen der cacheAsBitmap-Eigenschaft eines Anzeigeobjekts auf true legt der Cache-Speicher des Anzeigeobjekts eine Bitmap-Darstellung von sich selbst an. Flash Player oder AIR erstellt ein Oberflächenobjekt der Instanz, bei dem es sich um eine zwischengespeicherte Bitmap anstelle von Vektordaten handelt. Wenn Sie die Abmessungen des Anzeigeobjekts ändern, wird die Oberfläche nicht vergrößert oder verkleinert, sondern neu erstellt. Oberflächen können innerhalb von anderen Oberflächen verschachtelt sein. Die untergeordnete Oberfläche kopiert die Bitmap auf die übergeordnete Oberfläche. Weitere Informationen finden Sie unter Aktivieren der Bitmap-Zwischenspeicherung. Die Eigenschaften opaqueBackground und scrollRect der DisplayObject-Klasse sind mit der Bitmap-Zwischenspeicherung mit der cacheAsBitmap-Eigenschaft verwandt. Obwohl diese drei Eigenschaften unabhängig voneinander sind, arbeiten die Eigenschaften opaqueBackground und scrollRect am besten, wenn ein Objekt als eine Bitmap zwischengespeichert ist – Sie sehen die Leistungsvorteile für die Eigenschaften opaqueBackground und scrollRect nur dann, wenn Sie cacheAsBitmap auf true einstellen. Weitere Informationen zum Scrollen des Inhalts von Anzeigeobjekten finden Sie unter Schwenken und Scrollen von Anzeigeobjekten. Weitere Informationen zum Festlegen eines undurchsichtigen Hintergrunds finden Sie unter Festlegen eines undurchsichtigen Hintergrunds. Weitere Informationen zur Maskierung des Alphakanals, für die Sie die Eigenschaft cacheAsBitmap auf true einstellen müssen, finden Sie unter Maskieren von Anzeigeobjekten. Geeignete Szenarien für das ZwischenspeichernWenn Sie das Zwischenspeichern für ein Anzeigeobjekt aktivieren, wird eine Oberfläche erstellt. Dies bietet unter anderem den Vorteil, dass komplexe Vektoranimationen schneller gerendert werden. Das Zwischenspeichern ist in mehreren Szenarien eine gute Lösung, führt jedoch nicht immer zu einer Leistungssteigerung der SWF-Dateien, sondern kann in manchen Fällen die Leistung sogar beeinträchtigen. In diesem Abschnitt wird beschrieben, in welchen Szenarien das Zwischenspeichern zu empfehlen ist und wann Sie reguläre Anzeigeobjekte verwenden sollten. Die Gesamtleistung der zwischengespeicherten Daten richtet sich nach den folgenden Faktoren: Komplexität der Vektordaten in den Instanzen, Menge der zu ändernden Daten und Einstellung der Eigenschaft opaqueBackground. Wenn Sie nur kleine Bereiche ändern, ist der Unterschied bei Verwendung einer Oberfläche im Vergleich mit Vektordaten möglicherweise kaum wahrnehmbar. Es empfiehlt sich, beide Szenarien zu testen, bevor Sie die Anwendung bereitstellen. Szenarien für die Bitmap-ZwischenspeicherungIm Folgenden werden einige typische Szenarien aufgelistet, bei denen die Bitmap-Zwischenspeicherung deutliche Vorteile bieten kann.
Das Aktivieren der Bitmap-Zwischenspeicherung für alle diese Szenarien verbessert die Reaktion und Interaktivität der Anwendung, da die Vektorgrafiken optimiert werden. Wenn Sie darüber hinaus einen Filter auf das Anzeigeobjekt anwenden, wird die Eigenschaft cacheAsBitmap automatisch auf true eingestellt, auch wenn Sie explizit den Wert false vorgeben. Wenn Sie sämtliche Filter eines Anzeigeobjekts löschen, wird die Eigenschaft cacheAsBitmap auf den Wert zurückgesetzt, der zuletzt eingestellt war. Nicht geeignete Szenarien für die Bitmap-ZwischenspeicherungWenn Sie dieses Funktionsmerkmal in den falschen Situationen verwenden, kann dies die Leistung der SWF-Datei beeinträchtigen. Beachten Sie bei der Verwendung der Bitmap-Zwischenspeicherung folgende Richtlinien:
Aktivieren der Bitmap-ZwischenspeicherungZum Aktivieren der Bitmap-Zwischenspeicherung für ein Anzeigeobjekt stellen Sie die Eigenschaft cacheAsBitmap auf true ein: mySprite.cacheAsBitmap = true; Nachdem Sie die Eigenschaft cacheAsBitmap auf true eingestellt haben, werden Sie eventuell feststellen, dass die Pixel im Anzeigeobjekt automatisch an ganzen Koordinaten ausgerichtet werden. Beim Testen der SWF-Datei werden Sie wahrscheinlich sehen, dass komplexe Vektoranimationen im Vergleich zu normalen Animationen wesentlich schneller gerendert werden. In den folgenden Fällen wird keine Oberfläche (zwischengespeicherte Bitmap) erstellt, auch dann nicht, wenn cacheAsBitmap auf true eingestellt ist:
Transformationsmatrizen für zwischengespeicherte BitmapsIn AIR-Anwendungen für Mobilgeräte sollten Sie die cacheAsBitmapMatrix-Eigenschaft immer dann festlegen, wenn Sie auch die cacheAsBitmap-Eigenschaft setzen. Durch Festlegen dieser Eigenschaft können Sie mehr Transformationen auf das Anzeigeobjekt anwenden, ohne dass ein erneutes Rendern ausgelöst wird. mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); Wenn Sie diese Matrixeigenschaft festlegen, können Sie die folgenden zusätzlichen Transformationen auf das Anzeigeobjekt anwenden, ohne dass das Objekt erneut zwischengespeichert wird:
Diese Transformationen werden direkt auf die zwischengespeicherte Bitmap angewendet. |
|