Erstellen von Animate-Inhalten zur Verwendung auf mobilen Geräten

Beim Erstellen von Animate-Inhalten für mobile Geräte sind gewisse Grundsätze zu befolgen. Aufgrund der Beschränkungen bei Mobilgeräten versuchen Animate-Entwickler, extrem komplexe Grafiken und übermäßiges Tweening oder Transparenz eher zu vermeiden.

Flash Lite-Entwickler haben zusätzliche Schwierigkeiten, weil die Leistung auf mobilen Geräten stark variiert. Wenn Inhalte auf vielen unterschiedlichen Geräten veröffentlicht werden müssen, müssen die Entwickler häufig den kleinsten gemeinsamen Nenner finden.

Beim Optimieren von mobilen Inhalten muss man Kompromisse machen. Während beispielsweise eine Technik für eine optimierte Darstellung von Inhalten sorgt, führt eine andere zu besserer Leistung. Wenn Sie die Vor- und Nachteile der gefundenen Kompromisse gegeneinander abwägen, werden Sie wiederholt zwischen dem Testen im Emulator und dem Testen auf dem Zielgerät hin- und herwechseln. Sie müssen Ihre Inhalte auf dem eigentlichen Gerät sehen, um die Farbtreue, Textlesbarkeit, physischen Interaktionen, Reaktionsfähigkeit der Benutzeroberfläche und andere Aspekte der realen mobilen Erfahrung beurteilen zu können.

Hinweis:

Der Inhalt zu Flash Lite gilt nicht für Flash CC und höhere Versionen. 

Flash Lite-Richtlinien für Animation auf mobilen Geräten

Beim Erstellen von animierten Inhalten für ein mobiles Gerät müssen Sie die Prozessorbeschränkungen des Gerätes berücksichtigen. Das Befolgen dieser Richtlinien kann verhindern, dass Flash Lite-Inhalte langsam ausgeführt werden:

  • Überprüfen Sie beim Erstellen einer neuen Flash Lite-Datei, ob das Dokument richtig eingerichtet ist. Animate-Dateien lassen sich zwar problemlos skalieren, doch kann die Leistung beeinträchtigt werden, wenn die Datei nicht mit ihrer nativen Stage-Größe ausgeführt wird und im Player skaliert werden muss. Versuchen Sie, die Stage-Größe des Dokuments auf die Auflösung des Zielgerätes abzustimmen. Wählen Sie in Flash Player auch die korrekte Version von Flash Lite.

  • Flash Lite kann Vektorgrafiken mit niedriger, mittlerer und hoher Qualität rendern. Je höher die Renderqualität, desto reibungsloser und genauer rendert Flash Lite Vektorgrafiken und desto größer die Anforderungen an den Geräteprozessor. Wenn Sie komplexe Animationen erstellen möchten, experimentieren Sie damit, die Qualitätseinstellung des Players zu verändern. Testen Sie anschließend die SWF-Datei gründlich. Die Renderqualität einer SWF-Datei kontrollieren Sie mit der Eigenschaft _quality oder dem Befehl SetQuality. Gültige Werte für die Eigenschaft _quality sind LOW, MEDIUM und HIGH.

  • Beschränken Sie die Anzahl gleichzeitiger Tweenings. Verringern Sie die Anzahl der Tweenings oder arrangieren Sie die Animation so, dass eines beginnt, wenn ein anderes endet.

  • Verwenden Sie Transparenzeffekte (Alpha) sparsam, weil sie prozessorintensiv sind. Vermeiden Sie insbesondere das Tweening von Symbolen mit einem nicht vollständig opaken Alpha-Wert (unter 100 %).

  • Vermeiden Sie prozessorintensive optische Effekte, wie zum Beispiel große Masken, intensive Bewegungen, Alpha-Füllmethoden, umfangreiche Verläufe und komplexe Vektoren.

  • Experimentieren Sie mit Kombinationen aus Tweenings, Keyframe-Animationen und ActionScript-gesteuerten Bewegungen, um die wirksamsten Ergebnisse zu erzeugen.

  • Das Rendern von Vektor-Ovalen und -Kreisen ist viel speicherintensiver als das Rendern von Vierecken. Auch der Einsatz runder und ovaler Konturen belastet den Prozessor stärker.

  • Testen Sie Animationen häufig auf den eigentlichen Zielgeräten.

  • Wenn Animate einen animierten Bereich zeichnet, wird ein rechteckiger Begrenzungsrahmen um diesen Bereich definiert. Sie optimieren die Zeichnung, indem Sie dieses Rechteck so klein wie möglich machen. Vermeiden Sie überlappende Tweenings, weil Animate den zusammengefügten Bereich als ein Rechteck und damit als größeren Gesamtbereich interpretiert. Optimieren Sie die Animation mit der Animate-Funktion „Bildaktualisierungsbereiche anzeigen“.

  • Vermeiden Sie die Verwendung von _alpha = 0 und _visible = false zum Ausblenden von Filmen auf dem Bildschirm. Wenn Sie die Sichtbarkeit eines Films einfach ausschalten oder seinen Alpha-Wert auf Null ändern, ist er immer noch in Berechnungen für das Zeilen-Rendering enthalten, was die Leistung beeinträchtigen kann.

  • Versuchen Sie auch nicht, einen Film auszublenden, indem Sie ihn hinter einem anderen Grafikelement verbergen. Er wird dann immer noch in den Berechnungen des Players berücksichtigt. Bewegen Sie stattdessen Filme vollständig von der Bühne oder entfernen Sie sie durch Aufrufen von removeMovieClip.

Flash Lite-Bitmaps und Vektorgrafiken auf mobilen Geräten

Flash Lite kann sowohl Vektor- als auch Bitmapgrafiken rendern. Jede Art von Grafik hat Vor- und Nachteile. Die Entscheidung zwischen Vektor- und Bitmapgrafiken ist nicht immer einfach und richtet sich oft nach mehreren Faktoren.

Vektorgrafiken sind auf kompakte Weise als mathematische Gleichungen in SWF-Dateien dargestellt und können vom Flash Lite Player während der Laufzeit gerendert werden. Bitmapgrafiken werden dagegen als Bereiche aus Bildelementen (Pixeln) dargestellt, die mehr Daten-Bytes benötigen. Somit kann der Einsatz von Vektorgrafiken in einer Datei zur Reduzierung der Dateigröße und Speicherauslastung beitragen.

Vektorgrafiken behalten auch ihre glatten Formen bei, wenn sie größenskaliert werden. Bitmapbilder können nach dem Skalieren eckig oder gepixelt aussehen.

Im Vergleich zu Bitmaps benötigen Vektorgrafiken mehr Prozessorleistung für das Rendering, insbesondere Vektorgrafiken mit vielen komplexen Formen und Füllungen. Folglich kann die Nutzung vieler Vektorformen manchmal die allgemeine Dateileistung verringern. Da Bitmapgrafiken nicht so viel Verarbeitungszeit für das Rendering benötigen wie Vektorgrafiken, sind sie für manche Dateien besser geeignet, beispielsweise eine komplexe Straßenkarte, die auf einem Mobiltelefon animiert und gescrollt werden soll.

Bedenken Sie stets folgende Punkte:

  • Vermeiden Sie Pfade in Vektorformen. Pfade haben eine innere und äußere Kante (Füllungen nur eine) und erfordern die doppelte Rendering-Leistung.

  • Ecken lassen sich leichter als Kurven rendern. Verwenden Sie nach Möglichkeit flache Kanten, insbesondere bei sehr kleinen Vektorformen.

  • Optimierung ist besonders hilfreich bei kleinen Vektorformen wie Symbolen. Die Details komplexer Symbole können beim Rendering verloren gehen. Dann war die Arbeit für das Rendering der Details umsonst.

  • Eine allgemeine Regel lautet, Bitmaps für kleine, komplexe Bilder (wie zum Beispiel Symbole) zu verwenden und Vektorgrafiken für größere und einfachere.

  • Importieren Sie Bitmapgrafiken mit der richtigen Größe, anstatt große Grafiken zu importieren und sie in Animate zu verkleinern. Das ist eine Verschwendung von Dateigröße und Laufzeitspeicher.

  • Der Flash Lite Player unterstützt keine Bitmapglättung. Wenn eine Bitmap skaliert oder gedreht wird, sieht sie eckig aus. Wenn es erforderlich ist, eine Grafik zu skalieren oder zu drehen, sollten Sie stattdessen besser eine Vektorgrafik in Betracht ziehen.

  • Text ist im Grunde nur eine sehr komplexe Vektorform. Da Text natürlich oft unerlässlich ist, kann man kaum völlig darauf verzichten. Wenn Text benötigt wird, sollten Sie ihn besser nicht animieren oder über eine Animation legen. Sie sollten Text eher als Bitmap verwenden. Bei mehrzeiligem dynamischem und eingegebenem Text wird der Zeilenumbruch der Textfolge nicht zwischengespeichert. Animate bricht Zeilen während der Laufzeit um und berechnet den Umbruch jedes Mal neu, wenn das Textfeld aktualisiert werden muss. Statische Textfelder sind unproblematisch, weil der Zeilenumbruch vorher während der Kompilierzeit berechnet wird. Bei dynamischen Inhalten sind dynamische Textfelder unvermeidlich. Verwenden Sie jedoch nach Möglichkeit besser statische Textfelder.

  • Setzen Sie in PNG-Dateien so wenig Transparenz wie möglich ein. Animate muss die Aktualisierungen sogar für die transparenten Bereiche des Bitmaps berechnen. Exportieren Sie beispielsweise bei einer transparenten PNG-Datei, die ein Vordergrundelement darstellt, die transparente PNG nicht in voller Bildschirmgröße. Exportieren Sie sie stattdessen mit der tatsächlichen Größe des Vordergrundelements.

  • Versuchen Sie, Bitmapebenen und Vektorebenen jeweils zusammen zu gruppieren. Animate muss unterschiedliche Renderer für Bitmap- und Vektorinhalt einsetzen und der Wechsel zwischen Renderern nimmt Zeit in Anspruch.

Einrichten der Komprimierung von Flash Lite-Bitmaps für mobile Geräte

Bei der Arbeit mit Bitmaps können Sie Optionen für die Bildkomprimierung festlegen (je Bild oder global für alle Bitmapbilder), mit denen sich die SWF-Dateigröße verringern lässt.

Einrichten von Komprimierungsoptionen für eine einzelne Bitmapdatei

  1. Starten Sie Animate und erstellen Sie ein Dokument.

  2. Wählen Sie im Fenster „Bibliothek“ eine Bitmap aus.
  3. Klicken Sie mit der rechten Maustaste (Windows) bzw. bei gedrückter Ctrl-Taste (Macintosh) auf das Bitmapsymbol im Fenster „Bibliothek“ und wählen Sie im Kontextmenü den Befehl „Properties“ (Eigenschaften), um das Dialogfeld „Bitmap Properties“ (Bitmapeigenschaften) zu öffnen.
  4. Wählen Sie im Popupmenü „Compression“ (Komprimierung) eine der folgenden Optionen:
    • Wählen Sie die Option „Foto (JPEG)“ für Bilder mit komplexen Farb- oder Farbtonvariationen wie Fotos oder Grafiken mit Farbverlaufsfüllungen, Bei Auswahl dieser Option wird eine JPEG-Datei erstellt. Aktivieren Sie das Kontrollkästchen „Importierte JPEG-Daten verwenden“, um die für das importierte Bild angegebene Standardkomprimierungsqualität zu verwenden. Sie können diese Einstellung jedoch auch selbst festlegen, indem Sie die Option „Importierte JPEG-Daten verwenden“ deaktivieren und in das Textfeld „Qualität“ einen Wert zwischen 1 und 100 eingeben. Je höher die Einstellung, desto besser wird die Bildqualität, jedoch auch die Dateigröße. Passen Sie also den Wert entsprechend an.

    • Wählen Sie die Option „Verlustfrei (PNG/GIF)“ bei Bildern mit einfachen Formen und wenig Farben. Damit wird die Bildkomprimierung verlustfrei durchgeführt, ohne dass Daten ignoriert werden.

  5. Klicken Sie auf „Testen“, um das Ergebnis des Komprimierungsvorgangs zu überprüfen.

    Durch einen Größenvergleich zwischen der Originaldatei und der komprimierten Datei können Sie entscheiden, ob die gewählten Komprimierungseinstellungen für Ihre Zwecke geeignet sind.

Einrichten der Komprimierung für alle Bitmapbilder

  1. Wählen Sie „Datei“ > „Veröffentlichungseinstellungen“ und klicken Sie dann auf die Registerkarte „Flash“, um die Komprimierungsoptionen aufzurufen.
  2. Verschieben Sie den Regler für die JPEG-Qualität oder geben Sie einen Wert ein. Bei einem höheren JPEG-Qualitätswert wird ein Bild mit höherer Bildqualität, aber eine größere SWF-Datei erstellt. Eine niedrigere Bildqualität führt zu einer kleineren SWF-Datei. Probieren Sie unterschiedliche Einstellungen aus, um den besten Ausgleich zwischen Dateigröße und Bildqualität zu finden.

Optimieren von Flash Lite-Frames für mobile Geräte

  • Die meisten Geräte, die Flash Lite unterstützen, geben Inhalte mit etwa 15 bis 20 Frames pro Sekunde (FPS) wieder. Die Framerate bzw. Bildfrequenz kann einen so geringen Wert wie 6 FPS aufweisen. Stellen Sie bei der Entwicklung die Bildfrequenz ungefähr auf die Wiedergabegeschwindigkeit des Zielgerätes ein. Das zeigt, wie Inhalte auf einem Gerät mit geringer Leistung ausgeführt werden. Stellen Sie vor dem Veröffentlichen einer fertigen SWF-Datei die Bildfrequenz des Dokuments auf mindestens 20 FPS ein, um eine Einschränkung der Leistung zu vermeiden, wenn das Gerät eine höhere Bildfrequenz unterstützt.

  • Denken Sie bei der Anwendung von gotoAndPlay daran, dass jeder Frame zwischen dem aktuellen Frame und dem angeforderten Frame initialisiert werden muss, bevor der angeforderte Frame abgespielt wird. Wenn viele dieser Frames unterschiedliche Inhalte enthalten, könnte es effizienter sein, statt der Zeitachse verschiedene Filme zu verwenden.

  • Das Vorladen des gesamten Inhalts durch Einfügen an den Beginn der Datei ist zwar auf dem Desktop sinnvoll, kann jedoch auf einem mobilen Gerät den Dateistart verzögern. Verteilen Sie Inhalte auf die gesamte Datei, damit die Filme erst beim Abspielen initialisiert werden.

Optimieren von ActionScript für Flash Lite-Inhalte auf mobilen Geräten

Wegen der Verarbeitungsgeschwindigkeit und Speichereinschränkungen auf den meisten Mobilgeräten sollten Sie diese Richtlinien befolgen, wenn Sie ActionScript for Flash Lite-Inhalte zur Verwendung auf mobilen Geräten entwickeln:

  • Gestalten Sie die Datei und den zugehörigen Code so einfach wie möglich. Entfernen Sie nicht verwendete Filme, löschen Sie unnötige Frame- und Codeschleifen und benutzen Sie nicht zu viele oder irrelevante Frames.

  • Der Einsatz von FOR-Schleifen kann verarbeitungsintensiv sein, weil durch Überprüfung der Bedingung bei jeder Wiederholung Mehraufwand entsteht. Wenn die Kosten für Wiederholungs- und Schleifenaufwand vergleichbar sind, führen Sie statt einer Schleife besser mehrere Vorgänge einzeln aus. Der Code ist vielleicht länger, aber die Leistung verbessert sich.

  • Beenden Sie Schleifen auf Framebasis, sobald sie nicht mehr erforderlich sind.

  • Vermeiden Sie nach Möglichkeit die Verarbeitung von Zeichenfolgen und Bereichen, weil dies rechenintensiv sein kann.

  • Versuchen Sie immer, direkt auf Eigenschaften zuzugreifen als ActionScript-Getter- und Setter-Methoden anzuwenden, die mit einem größeren Aufwand verbunden sind als andere Methodenaufrufe.

  • Verwalten Sie Ereignisse mit Bedacht. Gestalten Sie Ereignisempfängerbereiche kompakt, indem Sie mit Bedingungen überprüfen, ob ein Empfänger vorhanden ist (nicht null ist), bevor sie ihn aufrufen. Löschen Sie aktive Intervalle durch Aufrufen von clearInterval und entfernen Sie aktive Empfänger durch Aufrufen von removeListener, bevor Sie Inhalte mit unloadapplication oder removeapplicationClip entfernen. Animate ruft SWF-Datenspeicher (zum Beispiel von Intervallen und Empfängern) nicht ab, wenn ActionScript-Funktionen beim Entladen eines Films noch auf die SWF-Daten verweisen.

  • Wenn Variablen nicht mehr benötigt werden, löschen Sie sie oder setzen Sie sie auf null. Damit werden sie zur Entsorgung markiert. Durch das Löschen von Variablen wird der Speicherbedarf während der Laufzeit reduziert, da überflüssige Elemente aus der SWF-Datei entfernt werden. Es ist daher vorteilhafter, Variablen zu löschen, anstatt sie auf null zu setzen.

  • Entfernen Sie Empfänger ausdrücklich aus Objekten, indem Sie vor der Entsorgung den Befehl removeListener aufrufen.

  • Wenn eine Funktion dynamisch aufgerufen wird und einen festen Parametersatz durchläuft, verwenden Sie call anstelle von apply.

  • Gestalten Sie Namensräume (zum Beispiel Pfade) kompakter, um die Startzeit zu verkürzen. Jede Ebene im Paket ist auf einen IF-Befehl kompiliert und verursacht einen Object-Aufruf. Weniger Ebenen im Pfad sparen demnach Zeit. Ein Pfad mit den Ebenen com.xxx.yyy.aaa.bbb.ccc.funtionName führt beispielsweise dazu, dass eine Objektinstanz für com.xxx.yyy.aaa.bbb.ccc erstellt wird. Manche Flash-Entwickler reduzieren mit Vorprozessorsoftware den Pfad auf eine eindeutige Kennung wie z. B. 58923409876.functionName, bevor sie den SWF-Code kompilieren.

  • Besteht eine Datei aus mehreren SWF-Dateien, welche die gleichen ActionScript-Klassen verwenden, schließen Sie diese Klassen bei der Kompilation aus ausgewählten SWF-Dateien aus. Dadurch können Sie die Zeit zum Herunterladen der Datei und Laufzeitspeicheranforderungen reduzieren.

  • Verwenden Sie nicht Object.watch und Object.unwatch, weil der Player bei jeder Änderung an einer Objekteigenschaft bestimmen muss, ob eine Änderungsmitteilung gesendet werden muss.

  • Wenn ActionScript-Code, der in einem Keyframe auf der Zeitachse ausgeführt wird, mehr als eine Sekunde benötigt, sollten Sie erwägen, diesen Code zur Ausführung über mehrere Keyframes aufzuteilen.

  • Entfernen Sie beim Veröffentlichen der SWF-Datei trace-Befehle aus dem Code. Aktivieren Sie hierzu im Dialogfeld „Veröffentlichungseinstellungen“ auf der Registerkarte „Flash“ das Kontrollkästchen „Nachzeichnungsaktionen auslassen“.

  • Durch Übernahme wird die Anzahl von Methodenaufrufen erhöht und mehr Speicher benötigt: Eine Klasse, welche ihre gesamten Funktionen enthält, ist während der Laufzeit effizienter als eine Klasse, die einen Teil ihrer Funktionalität von einer Überklasse übernimmt. Aus diesem Grund müssen Sie möglicherweise einen Designkompromiss zwischen der Erweiterbarkeit von Klassen und Code-Effizienz eingehen.

  • Wenn eine SWF-Datei eine andere SWF-Datei lädt, die eine benutzerdefinierte ActionScript-Klasse (zum Beispiel foo.bar.CustomClass) enthält, und dann die SWF-Datei entlädt, bleibt die Klassendefinition im Speicher. Um die Speicheranforderungen zu verringern, löschen Sie ausdrücklich alle benutzerdefinierten Klassen in entladenen SWF-Dateien. Verwenden Sie den Befehl delete und geben Sie den vollständig qualifizierten Klassennamen an, z. B.: delete foo.bar.CustomClass.

  • Beschränken Sie den Einsatz globaler Variablen, weil sie nicht für die Entsorgung markiert werden, wenn der sie definierende Film entfernt wird.

  • Verwenden Sie nicht die Komponenten der Standardbenutzeroberfläche (verfügbar im Bedienfeld „Komponenten“ in Flash). Diese Komponenten wurden für die Ausführung auf Desktopcomputern entwickelt und sind nicht für mobile Geräte optimiert.

  • Vermeiden Sie nach Möglichkeit stark verschachtelte Funktionen.

  • Verweisen Sie nicht auf nicht vorhandene Variablen, Objekte oder Funktionen. Im Vergleich zur Desktopversion von Flash Player sucht Flash Lite 2 langsam nach Verweisen auf nicht vorhandene Variablen. Das kann die Leistung erheblich beeinträchtigen.

  • Definieren Sie möglichst keine Funktionen mit anonymer Syntax, zum Beispiel myObj.eventName = function{ ...}. Explizit definierte Funktionen sind effizienter, wie zum Beispiel function myFunc { ...}; my Obj.eventName = myFunc;.

  • Verwenden Sie Math-Funktionen und Gleitkommazahlen so sparsam wie möglich. Die Berechnung dieser Werte verlangsamt die Leistung. Wenn Sie Math-Routinen einsetzen müssen, sollten Sie die Werte nach Möglichkeit vorher berechnen und sie in einem Variablenbereich speichern. Das Abrufen von Werten aus einer Datentabelle geht viel schneller als sie während der Laufzeit durch Flash berechnen zu lassen.

Verwalten von Flash Lite-Dateispeicher für mobile Geräte

Flash Lite löscht regelmäßig Objekte und Variablen aus dem Speicher, auf die eine Datei nicht mehr verweist. Dies wird als Entsorgung bezeichnet. Flash Lite führt die Entsorgung alle 60 Sekunden aus, oder immer dann, wenn die Auslastung des Dateispeichers plötzlich um 20 % oder mehr zunimmt.

Sie können zwar nicht steuern, wie und wann Flash Lite die Entsorgung vornimmt, aber dennoch nicht benötigten Speicherplatz gezielt freimachen. Geben Sie bei Zeitachsen- oder globalen Variablen den Speicherplatz, der von ActionScript-Objekten genutzt wird, mit dem Befehl delete frei. Bei lokalen Variablen, beispielsweise einer mit einer Funktionsdefinition definierten Variable, können Sie mit dem Befehl delete den Speicher eines Objektes nicht räumen, aber die auf das Objekt verweisende Variable auf null setzen. Dadurch wird der Speicher, den das Objekt belegt, freigegeben. Voraussetzung ist, dass keine anderen Verweise auf dieses Objekt bestehen.

Die folgenden beiden Codebeispiele zeigen, wie man von Objekten belegten Speicherplatz freigibt, indem man die auf diese Objekte verweisende Variable löscht. Die Beispiele sind identisch, allerdings mit der Ausnahme, dass im ersten Beispiel eine Zeitachsenvariable und im zweiten eine globale Variable erzeugt wird.

// First case: variable attached to a movie or 
// movie clip timeline 
// 
// Create the Date object. 
var mcDateObject = new Date(); 
// Returns the current date as a string. 
trace(mcDateObject); 
// Delete the object. 
delete mcDateObject; 
// Returns undefined. 
trace(mcDateObject); 
// 
// Second case: global variable attached to a movie or 
// movie clip timeline 
// 
// Create the Date object. 
_global.gDateObject = new Date(); 
// Returns the current date as a string. 
trace(_global.gDateObject); 
// Delete the object. 
delete _global.gDateObject; 
// Returns undefined. 
trace(_global.gDateObject);

Wie zuvor erwähnt, können Sie den Befehl delete nicht verwenden, um Speicher freizumachen, den eine lokale Funktionsvariable verwendet. Setzen Sie stattdessen den Variablenverweis auf null. Das hat den gleichen Effekt wie der Befehl delete.

function func() 
{ 
    // Create the Date object. 
    var funcDateObject = new Date(); 
    // Returns the current date as a string. 
    trace(funcDateObject); 
    // Delete has no effect. 
    delete funcDateObject; 
    // Still returns the current date. 
    trace(funcDateObject); 
    // Set the object reference to null. 
    funcDateObject = null; 
    // Returns null. 
    trace(funcDateObject); 
} 
// Call func() function. 
func();

Laden von Daten für mobile Geräte in Flash Lite

Wenn Sie Dateien für mobile Geräte entwickeln, sollten Sie die Datenmenge, die zu einem Zeitpunkt geladen werden soll, so gering wie möglich halten. Beim Laden externer Daten in eine Flash Lite-Datei (zum Beispiel mit XML.load) erzeugt das Betriebssystem des Gerätes möglicherweise einen Speicherfehler, wenn den eingehenden Daten unzureichender Speicher zugewiesen ist. Diese Situation kann auch dann auftreten, wenn die Gesamtmenge an restlichem Speicher ausreicht.

Angenommen beispielsweise, dass eine Datei versucht, eine XML-Datei mit 100 KB zu laden, und das Betriebssystem des Gerätes für die Verarbeitung des eingehenden Datenstroms nur 30 KB zugewiesen hat. In diesem Fall teilt Flash Lite dem Benutzer in einer Fehlermeldung mit, dass nicht genügend Speicher verfügbar ist.

Wenn Sie große Datenmengen laden müssen, gruppieren Sie die Daten in kleinere Pakete, zum Beispiel in mehrere XML-Dateien, und führen Sie für die einzelnen Pakete mehrere Aufrufe zum Laden von Daten aus. Die Größe der einzelnen Datenpakete und damit die erforderliche Anzahl der Aufrufe zum Laden von Daten variiert je nach Gerät und Datei. Um ein ausgewogenes Verhältnis zwischen der Anzahl der Datenabfragen und der Wahrscheinlichkeit eines Speicherfehlers zu bestimmen, testen Sie die Dateien auf verschiedenen Zielgeräten.

Vermeiden Sie es nach Möglichkeit, XML-Dateien zu laden und zu analysieren, um optimale Leistung zu erzielen. Speichern Sie stattdessen die Daten in einfachen Name-/Wert-Paaren und laden Sie die Daten mit loadVars aus einer Textdatei oder aus vorkompilierten SWF-Dateien.

Ausschließen von Klassen aus der Kompilierung für Flash Lite

Zur Verringerung der Größe einer SWF-Datei sollten Sie in Erwägung ziehen, Klassen aus der Kompilierung auszuschließen. Dabei bleibt jedoch die Fähigkeit zum Abrufen und Verwenden dieser Klassen zur Typüberprüfung bestehen. Dies ist beispielsweise der Fall, wenn Sie eine Datei mit mehreren SWF-Dateien oder gemeinsamen Bibliotheken entwickeln, besonders dann, wenn zahlreiche dieser Dateien und Bibliotheken auf dieselben Klassen zugreifen. Durch das Ausschließen von Klassen lässt sich das Duplizieren der Klassen in diesen Dateien weitgehend vermeiden.

  1. Erstellen Sie eine neue XML-Datei.
  2. Nennen Sie die XML-Datei FLA_Dateiname_exclude.xml, wobei FLA_Dateiname der Name der FLA-Datei ohne Erweiterung ist. Wenn die FLA-Datei beispielsweise sellStocks.fla heißt, muss der Name der XML-Datei sellStocks_exclude.xml lauten.
  3. Speichern Sie die Datei im selben Verzeichnis wie die FLA-Datei.
  4. Fügen Sie folgende Tags in die XML-Datei ein:
    <excludeAssets> 
        <asset name=”className1” /> 
        <asset name=”className2” /> 
    </excludeAssets>

    Die in den <asset>-Tags für die Namensattribute angegebenen Werte sind die Namen von Klassen, die aus der SWF-Datei ausgeschlossen werden sollen. Fügen Sie für die Datei so viele wie erforderlich hinzu. Die folgende XML-Datei schließt z. B. die Klassen mx.core.UIObject und mx.screens.Slide aus der SWF-Datei aus:

    <excludeAssets> 
        <asset name=”mx.core.UIObject” /> 
        <asset name=”mx.screens.Slide” /> 
    </excludeAssets>

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie