Cachelagra visningsobjektFlash Player 9 och senare, Adobe AIR 1.0 och senare Allt medan arbetet i Flash växer, oberoende av om du skapar ett program eller komplicerade skriptanimeringar, behöver du även tänka på prestanda och optimering. När du har ett innehåll som är statiskt (t.ex. en rektangulär Shape-instans) kommer innehållet inte att optimeras i Flash Player och AIR. När du ändrar rektangelns position ritas därför hela Shape-instansen om i Flash Player eller AIR. Du kan cachelagra specifika visningsobjekt för att förbättra SWF-filens prestanda. Visningsobjektet är en yta, egentligen en bitmappsversion av instansens vektordata, som du troligtvis inte behöver ändra mycket under SWF-filens livslängd. Detta innebär att instanser där cachelagring är aktiverat inte ritas om kontinuerligt när SWF-filen spelas upp, vilket innebär att SWF-filen återges snabbare. Obs! Du kan uppdatera vektordata vilket medför att ytan skapas om på nytt. Detta innebär att vektordata som cachelagrats i ytan inte behöver vara desamma för hela SWF-filen.
Inställning av visningsobjektets egenskap cacheAsBitmap till true får visningsobjektet att cachelagra en bitmappsrepresentation av sig själv. I Flash Player och AIR skapas ett ytobjekt för instansen som en cachelagrad bitmapp och inte som vektordata. Om du ändrar gränserna för visningsobjektet skapas ytan om i stället för att storleken ändras. Ytor kan kapslas i andra ytor. Bitmappen för den underordnade ytan kopieras till den överordnade ytan. Mer information finns i Aktivera bitmappscachning. Klassen DisplayObjects egenskaper opaqueBackground och scrollRect är båda relaterade till bitmappscachning med egenskapen cacheAsBitmap. Trots att dessa tre egenskaper är oberoende av varandra fungerar egenskaperna opaqueBackground och scrollRect bäst när ett objekt cachelagras som en bitmapp. Du ser prestandaförbättringar för egenskaperna opaqueBackground och scrollRect endast om du anger cacheAsBitmap till true. Mer information om rullning av visningsobjektinnehåll finns i Panorering och rullning av visningsobjekt. Mer information om inställning av ogenomskinlig bakgrund finns i Inställning av en ogenomskinlig bakgrundsfärg. Mer information om alfakanalsmaskering, som kräver att du anger egenskapen cacheAsBitmap till true, finns i Maskering av visningsobjekt. Aktivera cachelagringNär du aktiverar cachelagring för ett visningsobjekt skapas en yta. Detta medför flera fördelar som att exempelvis komplexa vektoranimeringar återges snabbare. Det finns flera olika scenarier då du vill att cachelagring ska vara aktiverad. Det kan verka som om du alltid bör ha cachelagring aktiverad för att förbättra SWF-filens prestanda, men det finns situationer då cachelagring inte förbättrar prestandan eller till och med försämrar den. I detta avsnitt beskrivs tillfällen då cachelagring ska användas och när vanliga visningsobjekt ska användas. Den övergripande prestandan för cachelagrade data beror på hur komplexa dina vektordata är i instansen, hur mycket data du ändrar och om du anger egenskapen opaqueBackground eller inte. Om du ändrar små områden är skillnaden mellan att använda en yta och att använda vektordata försumbar. Du kan testa båda scenarierna innan du distribuerar programmet. Använda bitmapps-cachningFöljande exempel är typiska scenarier då du kan se stora fördelar med att aktivera bitmappscachning.
Att aktivera bitmappscachning i alla dessa scenarier förbättrar svarstiderna och interaktiviteten i programmet tack vare att vektorgrafiken optimerats. När du dessutom använder ett filter för ett visningsobjekt anges cacheAsBitmap automatiskt till true, även om du explicit anger det som false. Om du rensar alla filter för ett visningsobjekt ändras egenskapen cacheAsBitmap till vad den senast ställts in på. Undvika bitmappscachningOm du använder den här funktionen under fel omständigheter kan det påverka SWF-filens prestanda negativt. Tänk på följande riktlinjer när du använder bitmappscachning:
Aktivera bitmappscachningOm du vill aktivera bitmappscachning för visningsobjekt anger du egenskapen cacheAsBitmap till true: mySprite.cacheAsBitmap = true; Sedan du angett egenskapen cacheAsBitmap till true kanske du noterar att visningsobjektsinstansen automatiskt pixelfästs till hela koordinater. När du testar SWF-filen upptäcker du att alla animeringar som utförs med komplexa vektorbilder återges mycket snabbare. En yta (cachelagrad bitmapp) skapas inte även om cacheAsBitmap har satts till true när ett eller flera av följande alternativ inträffar:
Omformningsmatriser för cachelagrade bitmapparI AIR-program för mobilenheter bör du ange egenskapen cacheAsBitmapMatrix när du anger egenskapen cacheAsBitmap. Genom att ange den här egenskapen kan du använda ett större antal omformningar på visningsobjektet utan att utlösa någon omgenerering. mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); När du anger den här matrix-egenskapen kan du använda följande extra omformningar på visningsobjektet utan att cacha om objektet:
De här omformningarna används direkt på den cachelagrade bitmappen. |
|