| 
  
           
            Ze zwiększaniem wielkości elementów w programie Flash — niezależnie od tego, czy tworzona jest aplikacja lub złożone animacje skryptowe — wiąże się konieczność pamiętania o wydajności i optymalizacji. Jeśli istnieje treść, która pozostaje statyczna (np. instancja Shape prostokąta), program Flash Player i środowisko AIR nie optymalizuje tej treści. Dlatego po zmianie położenia prostokąta program Flash Player lub środowisko AIR ponownie rysuje całą instancję Shape.
            
            Istnieje możliwość zapisywania w pamięci podręcznej określonych obiektów wyświetlanych w celu zwiększenia wydajności pliku SWF. Obiekt wyświetlany jest
            
             powierzchnią
            
            — bitmapą danych wektorowych instancji. Tych danych nie należy zanadto zmieniać w całym cyklu życia pliku SWF. Dlatego instancje, dla których włączono zapisywanie w pamięci podręcznej, nie są w rzeczywistości ponownie rysowane podczas odtwarzania pliku SWF, dzięki czemu renderowanie pliku SWF jest szybsze.
            
            
             Uwaga:
            
            Użytkownik może zaktualizować dane wektorowe, co powoduje odtworzenie powierzchni. Dlatego dane wektorowe zapisane w pamięci podręcznej powierzchni nie muszą pozostawać takie same w całym pliku SWF.
            
            Ustawienie wartości
            
             true
            
            dla właściwości
            
             cacheAsBitmap
            
            obiektu wyświetlanego powoduje, że obiekt wyświetlany zapisany w pamięci podręcznej staje się bitmapową reprezentacją samego siebie. Program Flash Player lub środowisko AIR tworzy obiekt powierzchni dla instancji i jest to bitmapa zapisana w pamięci podręcznej, a nie dane wektorowe. Zmiana krawędzi obiektu wyświetlanego powoduje, że powierzchnia zostanie odtworzona, a jej wielkość nie zostaje zmieniona. Powierzchnie mogą być zagnieżdżane w innych powierzchniach. Powierzchnia podrzędna kopiuje swoją bitmapę do własnej powierzchni nadrzędnej. Więcej informacji zawiera sekcja
            
             Włączanie zapisywania w pamięci podręcznej dla bitmap
            
            .
            
            Właściwości
            
             opaqueBackground
            
            i
            
             scrollRect
            
            klasy DisplayObject są powiązane z zapisywaniem bitmapy w pamięci podręcznej z wykorzystaniem właściwości
            
             cacheAsBitmap
            
            . Te trzy właściwości są niezależne od sobie, ale właściwości
            
             opaqueBackground
            
            i
            
             scrollRect
            
            działają najlepiej po zapisaniu obiektu w pamięci podręcznej w postaci bitmapy — zalety korzystania z właściwości
            
             opaqueBackground
            
            i
            
             scrollRect
            
            są widoczne tylko po ustawieniu dla właściwości
            
             cacheAsBitmap
            
            wartości
            
             true
            
            . Więcej informacji o przewijaniu treści obiektu wyświetlanego zawiera sekcja
            
             Panoramowanie i przewijanie obiektów wyświetlanych
            
            . Więcej informacji o ustawianiu nieprzezroczystego tła zawiera sekcja
            
             Ustawianie nieprzezroczystego koloru tła
            
            .
            
            Informacje na temat maskowania kanałów alfa, co wymaga ustawienia wartości
            
             true
            
            dla właściwości
            
             cacheAsBitmap
            
            zawiera sekcja
            
             Maskowanie obiektów wyświetlanych
            
            .
            
           
            
           
           
            Warunki, w jakich należy włączyć zapisywanie w pamięci podręcznej
           
            
             Włączenie zapisywania w pamięci podręcznej dla obiektu wyświetlanego powoduje utworzenie powierzchni, co wiąże się z pewnymi korzyściami, takimi jak szybsze renderowanie złożonych animacji wektorowych. Istnieje kilka scenariuszy, w których włączenie zapisywania w pamięci jest pożądane. Może się wydawać, że włączenie zapisywania w pamięci podręcznej jest zawsze konieczne w celu zwiększenia wydajności plików SWF; jednak istnieją sytuacje, w których zapisywanie w pamięci podręcznej nie zwiększa wydajności, a nawet może ją pogarszać. W niniejszej sekcji przedstawiono scenariusze, w których zapisywanie w pamięci podręcznej powinno być stosowane. Przedstawiono również scenariusze, w których należy korzystać z normalnych obiektów wyświetlanych.
             
             Całkowita wydajność danych zapisanych w pamięci podręcznej zależy od takich czynników jak złożoność danych wektorowych obiektów, intensywność zmian danych oraz ustawienie właściwości
             
              opaqueBackground
             
             . Jeśli zmiany dotyczą niewielkich obszarów, różnica między stosowaniem powierzchni i wykorzystywaniem danych wektorowych jest minimalna. Przed wdrożeniem aplikacji zalecane jest przetestowanie obydwu scenariuszy.
             
             
              
             
             
              Warunki, w jakich należy korzystać z zapisywania w pamięci podręcznej
             
              Poniżej wymieniono typowe scenariusze, w których zapisywanie bitmap w pamięci podręcznej może przynieść zauważalne korzyści.
              
              
               
                Złożony obraz w tle: aplikacja, która zawiera szczegółowy i złożony obraz tła w postaci danych wektorowych (np. obraz, dla którego zastosowano polecenie obrysowania bitmapy albo obiekt graficzny utworzony w programie Adobe Illustrator®). Tło może zawierać animowane znaki, co znacznie spowalnia animację, ponieważ tło musi stale regenerować dane wektorowe. W celu zwiększenia wydajności należy ustawić dla właściwości
                
                 opaqueBackground
                
                tła obiektu wyświetlanego wartość
                
                 true
                
                . Tło zostanie zrenderowane jako bitmapa, dzięki czemu będzie można je szybko odświeżać; dzięki temu z kolei animacja będzie szybciej odtwarzana.
               
               
                Przewijanie tekstu: aplikacja, która zawiera znaczną ilość tekstu w przewijanym polu tekstowym. Pole tekstowe można umieścić w obiekcie wyświetlanym ustawionym jako przewijalnie za pomocą przycisków do przewijania (właściwość
                
                 scrollRect
                
                ). To umożliwia szybkie przewijanie pikselowe dla określonej instancji. Gdy użytkownik przewinie instancję obiektu wyświetlanego, program Flash Player lub środowisko AIR przesunie przewijane piksele w górę i wygeneruje nowy wyświetlany region — nie będzie generował od nowa całego pola tekstowego.
               
               
                System z oknami: aplikacja ze złożonym systemem nachodzących na siebie okien. Każde z okien można zamknąć lub otworzyć (np. mogą to być okna przeglądarki). Jeśli każde okno zostanie oznaczone jako powierzchnia (poprzez ustawienie wartości
                
                 true
                
                dla właściwości
                
                 cacheAsBitmap
                
                ), każde okno zostanie odizolowane i zapisane w pamięci podręcznej. Użytkownicy będą mogli przeciągać okna, również nakładać je na siebie, przy czym nie będzie konieczności ponownego generowania wektorowej zawartości okien.
               
               
                Maskowanie kanałów alfa: jeśli stosowane jest maskowanie kanałów alfa, należy ustawić dla właściwości
                
                 cacheAsBitmap
                
                wartość
                
                 true
                
                . Więcej informacji zawiera sekcja
                
                 Maskowanie obiektów wyświetlanych
                
                .
                
              Włączenie zapisywania bitmapy w pamięci podręcznej w każdym z tych scenariuszy zwiększa szybkość odpowiedzi i powiększa interaktywność aplikacji poprzez optymalizację grafiki wektorowej.
              
              Ponadto zastosowanie filtru do obiektu wyświetlanego powoduje, że dla właściwości
              
               cacheAsBitmap
              
              automatycznie zostaje ustawiona wartość
              
               true
              
              , nawet jeśli użytkownik jawnie ustawi wartość
              
               false
              
              . Gdy wszystkie filtry obiektu wyświetlanego zostaną wyczyszczone, właściwość
              
               cacheAsBitmap
              
              uzyskuje wartość, którą ustawiono dla niej ostatnim razem.
              
             
              
             
             
              Kiedy należy unikać buforowania bitmap?
             
              Użycie tej funkcji w niewłaściwych okolicznościach może obniżyć wydajność pliku SWF. Jeśli stosowane jest zapisywanie bitmapy w pamięci podręcznej, należy pamiętać o poniższych wskazówkach:
              
              
               
                Nie należy używać zbyt wielu powierzchni (obiekty wyświetlane, dla których włączono zapisywanie w pamięci podręcznej). Każda powierzchnia korzysta z większej ilości pamięci niż normalny obiekt wyświetlany, co oznacza, że należy włączać powierzchnie tylko wówczas, gdy wymagane jest przyspieszenie renderowania.
                
                Bitmapa zapisana w pamięci podręcznej może zużywać o wiele więcej pamięci niż zwykły klip filmowy. Na przykład: instancja Sprite na stole montażowym ma wielkość 250 x 250 pikseli, a po zapisaniu w pamięci podręcznej może zajmować 250 kB pamięci zamiast 1 kB — taką ilość pamięci zajmuje normalna instancja Sprite (nie zapisana w pamięci podręcznej).
               
               
                Należy unikać powiększania powierzchni zapisanych w pamięci podręcznej. Zbyt intensywne stosowanie funkcji zapisywania bitmap w pamięci podręcznej przyczynia się do dużego obciążenia pamięci (zobacz poprzedni punkt), zwłaszcza w przypadku powiększania obiektów.
               
               
                Powierzchnie należy stosować dla instancji obiektów wyświetlanych, które są głównie statyczne (nie animowane). Klip może być przeciągany lub przesuwany, ale jego zawartość nie powinna w zbyt dużym stopniu się zmieniać. (Animacja i zmiana treści jest bardziej prawdopodobna w przypadku instancji MovieClip zawierających animację lub instancję Video). Na przykład, jeśli klip zostanie obrócony lub przekształcony, niektóre dane powierzchni staną się danymi wektorowymi, co będzie miało negatywny wpływ na wydajność pliku SWF.
               
               
                Przemieszanie danych powierzchni z danymi wektorowymi powoduje, że programy Flash Player i AIR (a czasami i inne programy na komputerze) muszą wykonywać zbyt wiele operacji przetwarzania. Powierzchnie należy w miarę możliwości grupować ze sobą — np. podczas tworzenia aplikacji z oknami.
               
               
                Nie należy buforować obiektów, których grafika jest często zmieniana. Bufor bitmapy będzie rysowany ponownie podczas każdego skalowania, pochylania i obracania obiektu ekranowego, zmiany przezroczystości alfa, przekształcenia kolorów, przesuwania potomnych obiektów ekranowych lub rysowania za pomocą właściwości grafiki. Jeśli dzieje się tak co klatkę, środowisko wykonawcze musi rysować obiekt w bitmapie, a następnie kopiować bitmapę na stół montażowy. Oznacza to konieczność wykonania dodatkowych obliczeń w porównaniu do zwykłego rysowania na stole montażowym niebuforowanego obiektu. Różnica wydajności buforowania w stosunku do częstotliwości aktualizowania zależy od złożoności i rozmiaru obiektu ekranowego i można ją określić tylko przez testy konkretnej zawartości.
                
           
            
           
           
            Włączanie zapisywania w pamięci podręcznej dla bitmap
           
            
             Aby umożliwić zapisanie bitmapy w pamięci podręcznej w przypadku obiektu wyświetlanego, należy ustawić dla właściwości
             
              cacheAsBitmap
             
             wartość
             
              true
             
             :
             mySprite.cacheAsBitmap = true; 
             Po ustawieniu dla właściwości
             
              cacheAsBitmap
             
             wartości
             
              true
             
             może się zdarzyć, że obiekt wyświetlany zostanie przyciągnięty (piksele) do współrzędnych całkowitych. Podczas testowania pliku SWF użytkownik zauważy, że animacja wykonywana w przypadku skomplikowanego obrazu wektorowego będzie renderowana szybciej.
             
             Jeśli spełniony jest jeden z poniższych warunków, powierzchnia (bitmapa zapisana w pamięci podręcznej) nie zostanie utworzona, nawet jeśli dla właściwości
             
              cacheAsBitmap
             
             zostanie ustawiona wartość
             
              true
             
             :
             
            
             
            
            
             Macierze przekształceń buforowanych bitmap
            
             
              W aplikacjach AIR dla urządzeń przenośnych za każdym razem, gdy jest ustawiana właściwość
              
               cacheAsBitmap
              
              , należy ustawić właściwość
              
               cacheAsBitmapMatrix
              
              . Ustawienie tej właściwości umożliwia zastosowanie większej liczby przekształceń względem obiektu ekranowego bez wyzwolenia renderowania.
              mySprite.cacheAsBitmap = true; 
mySprite.cacheAsBitmapMatrix = new Matrix(); 
              Podczas ustawiania tej właściwości macierzy można zastosować następujące dodatkowe przekształcenie obiektu ekranowego bez ponownego buforowania tego obiektu:
              
              Te przekształcenia są stosowane bezpośrednio do buforowanej bitmapy.
              
           |  |  |