Inställning av scenegenskaperFlash Player 9 och senare, Adobe AIR 1.0 och senare Scenklassen åsidosätter de flesta egenskaper och metoder i klassen DisplayObject. Om du anropar en av dessa åsidosatta egenskaper eller metoder genereras ett undantag i Flash Player och AIR. Scenobjektet, exempelvis, har inte egenskaperna x eller y eftersom det har en fast position som programmets huvudbehållare. Egenskaperna x och y hänvisar till positionen hos ett visningsobjekt i relation till dess behållare. Eftersom scenen inte ingår i någon annan behållare för visningsobjekt används inte dessa egenskaper. Obs! En del egenskaper och metoder i scenklassen är bara tillgängliga för visningsobjekt som är i samma säkerhetssandlåda som den första inlästa SWF-filen. Mer information finns i scen, säkerhet.
Kontrollera uppspelningens bildrutehastighetEgenskapen framerate i klassen Stage används för att ange bildrutehastigheten för alla inlästa SWF-filer i programmet. Du hittar mer information i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen. Kontrollera scenskalningNär storleken på den del av skärmen som visar Flash Player eller AIR ändras justeras sceninnehållet automatiskt. Egenskapen scaleMode för klassen Stage anger hur sceninnehållet justeras. Den här egenskapen kan anges med fyra olika värden, som är definierade som konstanter i klassen flash.display.StageScaleMode:
Ställa in scenskalningslägen för AIR-fönsterScenens scaleMode-egenskap avgör hur underordnade visningsobjekt skalas och klipps när storleken på ett fönster ändras. Endast noScale-läget bör användas i AIR. I det här läget skalas inte scenen. I stället ändras scenens storlek inom fönstrets gränser. Objekt kan klippas bort om storleken på fönstret minskas. Scenskalningslägen är utformade för webbläsare och liknande miljöer, där du inte alltid har kontroll över scenens storlek eller proportioner. Med hjälp av dessa lägen kan du välja den bästa kompromissen för situationer när scenen inte stämmer överens med den ideala storleken eller proportionerna för programmet. I AIR har du alltid kontroll över scenen, och i de flesta fall kan du få ett bättre resultat genom att göra om layouten för innehållet eller justera fönsterstorleken, i stället för att aktivera skalning av scenen. I webbläsaren och det ursprungliga AIR-fönstret läses förhållandet mellan fönsterstorleken och den ursprungliga skalfaktorn in från den inlästa SWF-filen. Om du däremot skapar ett NativeWindow-objekt väljer AIR ett arbiträrt förhållande mellan fönsterstorleken och skalfaktorn 72:1. Det betyder att om fönstret är 72 x 72 pixlar ritas en rektangel med storleken 10 x 10 som har lagts till i fönstret med den korrekta storleken 10 x 10 pixlar. Om fönstret är 144 x 144 pixlar skalas en rektangel med storleken 10 x 10 pixlar till 20 x 20 pixlar. Om du fortfarande vill använda scaleMode i stället för noScale för en fönsterscen, kan du kompensera genom att ställa in skalfaktorn för visningsobjekten i fönstret till skalan 72 pixlar till aktuell bredd och höjd för scenen. Följande kod beräknar till exempel den skalfaktor som krävs för ett visningsobjekt med namnet client: if(newWindow.stage.scaleMode != StageScaleMode.NO_SCALE){ client.scaleX = 72/newWindow.stage.stageWidth; client.scaleY = 72/newWindow.stage.stageHeight; } Obs! I Flex- och HTML-fönster ställs scenen automatiskt in från scaleMode till noScale. Om du ändrar scaleMode stör det den automatiska layoutfunktionen som används i den här typen av fönster.
Arbeta i helskärmslägeMed helskärmsläge kan du ställa in en filmscen så att den fyller hela bildskärmen, utan några behållarkanter eller menyer. Scenklassens egenskap displayState används till att växla mellan helskärmsläge och vanligt läge för en SWF-fil. Egenskapen displayState kan anges med något av värdena som finns definierade med konstanterna i klassen flash.display.StageDisplayState. Om du vill växla till helskärmsläge tilldelar du egenskapen displayState värdet StageDisplayState.FULL_SCREEN: stage.displayState = StageDisplayState.FULL_SCREEN; Helskärmsläge i Flash Player kan endast initieras via en musklickning (även högerklick) eller tangenttryckning i ActionScript. AIR-innehåll som körs i säkerhetssandlådan application kräver inte att helskärmsläget används som svar på en användargest. Om du vill stänga helskärmsläget tilldelar du egenskapen displayState värdet StageDisplayState.NORMAL. stage.displayState = StageDisplayState.NORMAL; Dessutom kan användaren välja att avbryta helskärmsläget genom att växla fokus till ett annat fönster eller genom att använda någon av flera tangentkombinationer: Esc-tangenten (alla plattformar), Ctrl-W (Windows), Kommando-W (Mac) eller Alt-F4 (Windows). Aktivera helskärmsläge i Flash PlayerOm du vill aktivera helskärmsläge för en SWF-fil som är inbäddad på en HTML-sida måste HTML-koden som bäddar in Flash Player innehålla en param-tagg och ett embed-attribut med namnet allowFullScreen och värdet true enligt följande: <object> ... <param name="allowFullScreen" value="true" /> <embed ... allowfullscreen="true" /> </object> Välj Arkiv -> Publiceringsinställningar i utvecklingsverktyget i Flash och välj sedan mallen Endast Flash - Tillåt helskärm på fliken HTML i dialogrutan Publiceringsinställningar. I Flex ser du till att HTML-mallen omfattar <object>- och <embed>-taggarna som stöder helskärm. Om du använder JavaScript i en webbsida för att generera SWF-inbäddande taggar måste du ändra JavaScript-koden och lägga till taggen och attributet allowFullScreen param. Om HTML-sidan till exempel använder funktionen AC_FL_RunContent() (som används på HTML-sidor som genererats av Flash Professional och Flash Builder) bör du lägga till parametern allowFullScreen i det funktionsanropet enligt följande: AC_FL_RunContent( ... 'allowFullScreen','true', ... ); //end AC code Detta gäller inte för SWF-filer som körs i den fristående Flash Player. Obs! Om du ställer in fönsterläget (wmode i HTML) på ogenomskinlig fönsterlös (opaque) eller genomskinlig fönsterlös (transparent) blir helskärmsfönstret ogenomskinligt
Det finns också säkerhetsrelaterade restriktioner som begränsar användningen av helskärmsläge med Flash Player i en webbläsare. Dessa begränsningar beskrivs i avsnittet om Säkerhet. Scenstorlek och skalning i helskärmslägeEgenskaperna Stage.fullScreenHeight och Stage.fullScreenWidth returnerar höjd och bredd på bildskärmen som används vid helskärmsstorleken, om läget aktiveras omedelbart. Dessa värden kan bli fel om användaren har möjlighet att flytta webbläsaren från en bildskärm till en annan efter det att värdena har hämtats men innan helskärmsläget aktiveras. Om du hämtar värdena i samma händelsehanterare där egenskapen Stage.displayState tilldelats värdet StageDisplayState.FULL_SCREEN, stämmer värdena. Om en användare har flera bildskärmar expanderas SWF-innehållet så att bara en bildskärm fylls. I Flash Player och AIR används en mätmetod för att avgöra vilken bildskärm som innehåller den största andelen av SWF-innehåll och använda denna vid helskärmsläge. Egenskaperna fullScreenHeight och fullScreenWidth återspeglar endast storleken på den skärm som används i helskärmsläge. Du hittar mer information i avsnitten om Stage.fullScreenHeight och Stage.fullScreenWidth i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen. Scenskalning vid helskärmsläge är samma som vid normalläge; skalningen kontrolleras via scenklassens egenskap scaleMode. Om egenskapen scaleMode är angiven med StageScaleMode.NO_SCALE ändras scenegenskaperna stageWidth och stageHeight och återspeglar storleken på skärmarean som innehåller SWF-filen (i detta fall hela skärmen), om den visas i webbläsaren med HTML-parametern för den här inställningen. Du kan använda scenklassens händelse fullScreen för att ta reda på och reagera på huruvida helskärmsläget används eller inte. Du kanske vill omplacera, lägga till eller ta bort objekt från skärmen när helskärmsläge används, som i detta exempel: import flash.events.FullScreenEvent; function fullScreenRedraw(event:FullScreenEvent):void { if (event.fullScreen) { // Remove input text fields. // Add a button that closes full-screen mode. } else { // Re-add input text fields. // Remove the button that closes full-screen mode. } } mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw); Som du ser i koden är händelseobjektet för händelsen fullScreen en instans av klassen flash.events.FullScreenEvent, som innehåller egenskapen fullScreen som anger om helskärmsläget används (true) eller inte (false). Stöd för tangentbord i helskärmslägeAlla tangentbordsrelaterade ActionScript, till exempel tangentbordshändelser och textinmatning i TextField-instanser, inaktiveras i helskärmsläge när Flash Player körs i en webbläsare. Undantagen (de tangenter som aktiveras) är:
Dessa begränsningar gäller inte för SWF-innehåll som körs i den fristående Flash Player eller i AIR. AIR stöder ett interaktivt helskärmsläge som tillåter indata från tangentbordet. Maskinvaruskalning i helskärmslägeMed scenklassens fullScreenSourceRect-egenskap kan du ställa in Flash Player eller AIR så att ett visst område på scenen skalas efter helskärmsläget. Om det går skalar Flash Player och AIR maskinvaran med hjälp av grafik- och bildskärmskortet på användarens dator. Innehållet visas vanligtvis snabbare med maskinvaruskalning än med programvaruskalning. För att kunna dra nytta av maskinvaruskalning ställer du in hela scenen eller en del av scenen på helskärmsläge. I följande ActionScript 3.0-kod ställs hela scenen in på helskärmsläge: import flash.geom.*; { stage.fullScreenSourceRect = new Rectangle(0,0,320,240); stage.displayState = StageDisplayState.FULL_SCREEN; } När den här egenskapen är inställd på en giltig rektangel och egenskapen displayState är inställd på helskärmsläge skalar Flash Player och AIR det angivna området. Scenens faktiska storlek i pixlar i ActionScript ändras inte. Flash Player och AIR tillämpar en lägsta gräns för rektangelns storlek för att standardmeddelandet ”Tryck på Esc för att avsluta helskärmsläget” ska få plats. Gränsen är vanligen ungefär 260 gånger 30 pixlar, men den kan variera beroende på plattform och Flash Player-version. Egenskapen fullScreenSourceRect kan bara ställas in när Flash Player inte är i helskärmsläge. Om du använder den här egenskapen är det viktigt att du först definierar egenskapen och sedan tilldelar egenskapen displayState värdet för helskärmsläge. Aktivera skalning genom att ställa in egenskapen fullScreenSourceRect på ett rektangelobjekt. stage.fullScreenSourceRect = new Rectangle(0,0,320,240); Om du vill inaktivera skalning tilldelar du egenskapen fullScreenSourceRect värdet null. stage.fullScreenSourceRect = null; Om du vill utnyttja alla funktioner för maskinvaruacceleration med Flash Player aktiverar du dem i dialogrutan Flash Player-inställningar. Du öppnar dialogrutan genom att högerklicka (Windows) eller Control-klicka (Mac) i Flash Player-innehållet i webbläsaren. Markera fliken Visning, som är den första fliken, och klicka i kryssrutan: Aktivera maskinvaruacceleration. Direkt och GPU-sammansatt fönsterlägeFlash Player 10 innehåller två nya fönsterlägen, direkt och GPU-sammansättning, som du kan aktivera via publiceringsinställningarna i utvecklingsverktyget i Flash. Dessa lägen stöds inte i AIR. Om du vill använda dessa lägen måste du aktivera maskinvaruacceleration för Flash Player. Direkt läge använder den snabbaste, mest direkta, vägen för att skicka grafiken till skärmen, vilket är en fördel vid videouppspelning. GPU-sammansättning använder grafikprocessorn på bildskärmskortet för att accelerera sammansättningen. Videosammansättning är en process för att placera flera bilder i lager och skapa en enda videobild. När sammansättningen accelereras med GPU kan prestanda i YUV-konvertering, färgkorrigering, rotation eller skalning samt blandning förbättras. YUV-konvertering är den färgkonvertering av sammansatta analoga signaler – som används för överföring – till RGB-färgmodellen (röd, grön, blå) som videokameror och bildskärmar använder. Om du använder GPU för att accelerera sammansättning minskar behovet av minne och datorkraft i processorn. Det blir också en jämnare uppspelning av video med standarddefinition. Var försiktig när du implementerar dessa fönsterlägen. Att använda GPU-sammansättning kan kräva mycket minne och processorresurser. Om vissa åtgärder (till exempel blandningslägen, filtrering, urklipp eller maskering) inte kan utföras i GPU, utförs de av programvaran. Adobe rekommenderar att du begränsar dig till en SWF-fil per HTML-sida när du använder dessa lägen och du bör inte aktivera dessa lägen för banderoller. Funktionen Flash-alternativet Testa filmen har inte maskinvaruacceleration, men du kan använda den via alternativet Förhandsgranska publicering. Om du ställer in en bildhastighet i SWF-filen som är högre än 60, är den maximala uppdateringsfrekvensen oanvändbar. Om du ställer in bildhastigheten på 50 till och med 55 kan bildrutor uteslutas, vilket då och då kan ske av olika anledningar. Om du använder direkt läge krävs Microsoft® DirectX 9 med 128 MB VRAM i Windows och OpenGL för Apple Macintosh, Mac OS X v10.2 eller senare. För GPU-sammansättning krävs Microsoft DirectX 9 och Pixel Shader 2.0-stöd i Windows med 128 MB VRAM. Med Mac OS X och Linux krävs OpenGL 1.5 och flera OpenGL-tillägg (bildrutebuffertobjekt, flera texturer, skuggningsobjekt, skuggningsspråk och fragmentskuggning) för GPU-sammansättning. Du kan aktivera direkt- och GPU-accelerationsläget per SWF-fil via Flash-dialogrutan Publiceringsinställningar, med hjälp av menyn Maskinvaruacceleration på fliken Flash. Om du väljer Ingen återgår fönsterläget till standard, genomskinlig eller ogenomskinlig, beroende på vad som anges i inställningen för fönsterläge på fliken HTML. |
|