Festlegen der Stage-EigenschaftenFlash Player 9 und höher, Adobe AIR 1.0 und höher Die Stage-Klasse überschreibt die meisten Eigenschaften und Methoden der DisplayObject-Klasse. Wenn Sie eine diese überschriebenen Eigenschaften oder Methoden aufrufen, lösen Flash Player und AIR eine Ausnahme aus. Beispielsweise hat das Stage-Objekt keine x- oder y-Eigenschaften, da seine Position im Hauptcontainer der Anwendung festgelegt ist. Die x- und y-Eigenschaften beziehen sich auf die Position eines Anzeigeobjekts relativ zu seinem Container, und da die Bühne in keinem anderen Anzeigeobjektcontainer enthalten ist, treffen diese Eigenschaften nicht zu. Hinweis: Einige Eigenschaften und Methoden der Stage-Klasse stehen nur Anzeigeobjekten zur Verfügung, die sich in der gleichen Sicherheits-Sandbox wie die erste geladene SWF-Datei befinden. Nähere Einzelheiten finden Sie unter Sicherheit der Bühne.
Einstellen der WiedergabebildrateDie frameRate-Eigenschaft der Stage-Klasse dient zum Einstellen der Bildrate für alle SWF-Dateien, die in die Anwendung geladen werden. Weitere Informationen finden Sie im Handbuch ActionScript 3.0 Reference for the Adobe Flash Platform. Steuern der BühnenskalierungWenn eine Größenänderung an dem Teil des Bildschirms, der Flash Player oder AIR darstellt, durchgeführt wird, wird der Bühneninhalt von der Laufzeitumgebung automatisch angepasst. Die scaleMode-Eigenschaft der Stage-Klasse legt fest, wie der Bühneninhalt angepasst wird. Für diese Eigenschaft können vier verschiedene Werte festgelegt werden, die als Konstanten in der flash.display.StageScaleMode-Klasse definiert sind:
Festlegen des Skalierungsmodus für die Bühne in AIR-FensternDie scaleMode-Eigenschaft der Bühne bestimmt, wie die Bühne skaliert wird, und schneidet untergeordnete Anzeigeobjekte zu, wenn die Größe eines Fensters geändert wird. Nur der noScale-Modus sollte in AIR verwendet werden. In diesem Modus wird die Bühne nicht skaliert. Stattdessen ändert sich die Bühnengröße direkt mit den Fenstergrenzen. Wenn das Fenster verkleinert wird, werden Objekte möglicherweise entsprechend zugeschnitten. Die Skalierungsmodi für die Bühne sind für Umgebungen vorgesehen, in denen Sie nicht immer Kontrolle über die Größe oder das Seitenverhältnis der Bühne haben, beispielsweise in einem Webbrowser. Mit diesen Modi können Sie den optimalen Kompromiss auswählen, wenn die Bühne nicht der idealen Größe oder dem idealen Seitenverhältnis der Anwendung entspricht. In AIR können Sie die Bühne immer steuern. Deshalb erzielen Sie in den meisten Fällen bessere Ergebnisse, wenn Sie das Layout des Inhalts ändern oder die Fensterabmessungen anpassen, als wenn Sie die Bühnenskalierung aktivieren. Im Browser und für das anfängliche AIR-Fenster wird die Beziehung zwischen der Fenstergröße und dem anfänglichen Skalierungsfaktor aus der geladenen SWF-Datei gelesen. Wenn Sie jedoch ein NativeWindow-Objekt erstellen, wählt AIR eine zufällige Beziehung zwischen der Fenstergröße und dem Skalierungsfaktor von 72:1. Wenn Ihr Fenster eine Größe von 72 x 72 Pixel hat, wird deshalb ein 10 x 10 großes Rechteck mit der richtigen Größe von 10 x 10 Pixeln um das Fenster gezeichnet. Hat das Fenster dagegen eine Größe von 144 x 144 Pixeln, wird ein 10 x 10 Pixel großes Rechteck auf 20 x 20 Pixel skaliert. Wenn Sie als scaleMode unbedingt einen anderen Modus als noScale für eine Fensterbühne verwenden möchten, können Sie dies ausgleichen, indem Sie den Skalierungsfaktor für Anzeigeobjekte im Fenster auf ein Verhältnis von 72 Pixel relativ zur aktuellen Breite und Höhe der Bühne einstellen. Mit dem folgenden Code wird beispielsweise der erforderliche Skalierungsfaktor für ein Anzeigeobjekt namens client berechnet: if(newWindow.stage.scaleMode != StageScaleMode.NO_SCALE){
client.scaleX = 72/newWindow.stage.stageWidth;
client.scaleY = 72/newWindow.stage.stageHeight;
}
Hinweis: Für Flex- und HTML-Fenster wird scaleMode für die Bühne automatisch auf noScale eingestellt. Eine Änderung von scaleMode behindert die automatischen Layoutmechanismen, die in diesen Fenstertypen verwendet werden.
Verwenden des VollbildmodusIm Vollbildmodus können Sie die Bühne eines Movies so einrichten, dass sie den gesamten Monitor eines Benutzers füllt und keine Containerrahmen oder Menüs angezeigt werden. Mit der Eigenschaft displayState der Stage-Klasse wird der Vollbildmodus für eine SWF-Datei aktiviert bzw. deaktiviert. Die Eigenschaft displayState kann auf einen der Werte eingestellt werden, die durch die Konstanten in der flash.display.StageDisplayState-Klasse definiert sind. Um in den Vollbildmodus zu wechseln, setzen Sie die displayState-Eigenschaft auf StageDisplayState.FULL_SCREEN: stage.displayState = StageDisplayState.FULL_SCREEN; In Flash Player kann der Vollbildmodus durch ActionScript nur als Reaktion auf einen Mausklick (einschließlich Rechtsklick) oder einen Tastenanschlag initiiert werden. Bei AIR-Inhalt, der in der Sicherheits-Sandbox der Anwendung ausgeführt wird, muss der Vollbildmodus nicht als Reaktion auf eine Benutzeraktion aufgerufen werden. Um den Vollbildmodus zu beenden, setzen Sie displayState auf StageDisplayState.NORMAL. stage.displayState = StageDisplayState.NORMAL; Darüber hinaus kann ein Benutzer den Vollbildmodus beenden, indem er den Fokus auf ein anderes Fenster setzt oder einen der folgenden Tastaturbefehle verwendet: Esc-Taste (alle Plattformen), Strg-W (Windows), Befehl-W (Mac) oder Alt-F4 (Windows). Aktivieren des Vollbildmodus in Flash PlayerUm den Vollbildmodus für eine SWF-Datei zu aktivieren, die in eine HTML-Seite eingebettet ist, muss der HTML-Code zum Einbetten von Flash Player ein param-Tag und ein embed-Attribut mit dem Namen allowFullScreen und dem Wert true enthalten. Beispiel: <object>
...
<param name="allowFullScreen" value="true" />
<embed ... allowfullscreen="true" />
</object>
Wählen Sie in der Flash-Authoring-Umgebung „Datei“ > „Einstellungen für Veröffentlichungen“ und im Dialogfeld „Einstellungen für Veröffentlichungen“ auf der Registerkarte „HTML“ die Vorlage „Nur Flash - Vollbild zulassen“. Stellen Sie in Flex sicher, dass die HTML-Vorlage <object>- und <embed>-Tags enthält, die den Vollbildmodus unterstützen. Wenn Sie JavaScript in einer Webseite verwenden, um die SWF-eingebetteten Tags zu erzeugen, müssen Sie den JavaScript-Code ändern, um das Tag und das Attribut für den allowFullScreen-Parameter hinzuzufügen. Wenn Ihre HTML-Seite z. B. die AC_FL_RunContent()-Funktion verwendet (die in von Flash Professional und Flash Builder generierten HTML-Seiten verwendet wird), müssen Sie den allowFullScreen-Parameter wie folgt zum Funktionsaufruf hinzufügen: AC_FL_RunContent(
...
'allowFullScreen','true',
...
); //end AC code
Dies gilt nicht für SWF-Dateien, die im eigenständigen Flash Player ausgeführt werden. Hinweis: Wenn Sie den Fenstermodus („wmode“ in HTML) auf „Undurchsichtig ohne Fenster“ (opaque) oder „Durchsichtig ohne Fenster“ (transparent) einstellen, ist der Vollbildmodus immer undurchsichtig
Es gibt auch sicherheitsbezogene Einschränkungen für die Verwendung des Vollbildmodus mit Flash Player in einem Browser. Diese Einschränkungen werden unter Sicherheit beschrieben. Vollbild-Bühnengröße und SkalierungDie Eigenschaften Stage.fullScreenHeight und Stage.fullScreenWidth geben die Höhe und die Breite des Monitors zurück, der für den Vollbildmodus verwendet wird, sofern dieser Status sofort aufgerufen wird. Diese Werte können falsch sein, wenn der Benutzer die Möglichkeit hat, den Browser von einem Monitor zu einem anderen zu bewegen, nachdem Sie diese Werte abgerufen haben, aber bevor Sie in den Vollbildmodus gewechselt sind. Wenn Sie diese Werte in derselben Ereignisprozedur abrufen, in der Sie die Stage.displayState-Eigenschaft auf StageDisplayState.FULL_SCREEN eingestellt haben, sind diese Werte korrekt. Wenn der Benutzer über mehrere Monitore verfügt, wird ein Monitor mit dem SWF-Inhalt ausgefüllt . Flash Player und AIR ermitteln über eine Metrik, welcher Monitor den größten Teil der SWF-Datei anzeigt, und verwenden diesen Monitor dann für den Vollbildmodus. Die fullScreenHeight- und fullScreenWidth-Eigenschaften beziehen sich nur auf die Größe des Monitors, der für den Vollbildmodus verwendet wird. Weitere Informationen finden Sie unter Stage.fullScreenHeight und Stage.fullScreenWidth im Handbuch ActionScript 3.0 Reference for the Adobe Flash Platform. Das Skalierungsverhalten der Bühne im Vollbildmodus entspricht dem im normalen Modus; die Skalierung wird durch die Eigenschaft scaleMode der Stage-Klasse geregelt. Wenn die scaleMode-Eigenschaft auf StageScaleMode.NO_SCALE eingestellt wird, ändern sich die Eigenschaften stageWidth und stageHeight der Bühne und geben die Größe des Bildschirmbereichs an, der von der SWF-Datei belegt wird (in diesem Fall der gesamte Bildschirm); bei Anzeige im Browser wird die Einstellung vom HTML-Parameter für diesen gesteuert. Sie können das fullScreen-Ereignis der Stage-Klasse verwenden, um das Aktivieren oder Deaktivieren des Vollbildmodus zu erkennen und darauf zu reagieren. Beispielsweise möchten Sie beim Aktivieren oder Deaktivieren des Vollbildmodus Objekte auf dem Bildschirm neu positionieren, hinzufügen oder entfernen. Dies wird im folgenden Beispiel gezeigt: 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);
Wie dieser Code zeigt, ist das Ereignisobjekt für das fullScreen-Ereignis eine Instanz der flash.events.FullScreenEvent-Klasse, die eine fullScreen-Eigenschaft enthält, mit der angegeben wird, ob der Vollbildmodus aktiviert (true) oder deaktiviert (false) ist. Tastaturunterstützung im VollbildmodusWenn Flash Player in einem Browser ausgeführt wird, ist im Vollbildmodus der gesamte tastaturbezogene ActionScript-Code, zum Beispiel Tastaturereignisse und Texteingaben in TextField-Instanzen, deaktiviert. Es gibt folgende Ausnahmen (Tasten, die aktiviert sind):
Diese Einschränkungen gelten nicht für SWF-Inhalt, der im eigenständigen Flash Player oder in AIR ausgeführt wird. AIR unterstützt einen interaktiven Vollbildmodus, der Tastatureingaben zulässt. Hardwareskalierung im VollbildmodusMit der fullScreenSourceRect-Eigenschaft der Stage-Klasse können Sie Flash Player oder AIR so konfigurieren, dass ein bestimmter Bereich der Bühne in den Vollbildmodus skaliert wird. Flash Player und AIR skalieren mit der Hardware, falls verfügbar, und verwenden die Grafikkarte des Benutzercomputers, wodurch Inhalte normalerweise schneller als mit Softwareskalierung angezeigt. Um die Vorteile der Hardwareskalierung zu nutzen, setzen Sie die gesamte Bühne oder einen Teil der Bühne in den Vollbildmodus. Im folgenden ActionScript 3.0-Code wird die gesamte Bühne in den Vollbildmodus gesetzt: import flash.geom.*;
{
stage.fullScreenSourceRect = new Rectangle(0,0,320,240);
stage.displayState = StageDisplayState.FULL_SCREEN;
}
Wenn diese Eigenschaft auf ein gültiges Rechteck und die Eigenschaft displayState auf den Vollbildmodus gesetzt wird, skalieren Flash Player und AIR den angegebenen Bereich. Die tatsächliche Größe der Bühne in Pixel innerhalb von ActionScript wird nicht geändert. Flash Player und AIR erzwingen eine Mindestgröße des Rechtecks, damit die standardmäßige Meldung „Vollbildmodus mit Esc beenden“ darin Platz findet. Diese Mindestgröße beträgt normalerweise ca. 260 x 30 Pixel, kann jedoch je nach Plattform und Flash Player-Version variieren. Die fullScreenSourceRect-Eigenschaft kann nur festgelegt werden, wenn sich Flash Player bzw. AIR nicht im Vollbildmodus befindet. Um diese Eigenschaft korrekt zu verwenden, stellen Sie diese Eigenschaft zuerst ein und stellen Sie dann die displayState-Eigenschaft auf den Vollbildmodus ein.Um die Skalierung zu aktivieren, legen Sie die Eigenschaft fullScreenSourceRect auf ein Rechteckobjekt fest. stage.fullScreenSourceRect = new Rectangle(0,0,320,240); Zum Deaktivieren der Skalierung setzen Sie die fullScreenSourceRect-Eigenschaft auf null. stage.fullScreenSourceRect = null; Um alle Hardwarebeschleunigungsfunktionen mit Flash Player zu nutzen, aktivieren Sie sie über das Dialogfeld „Flash Player-Einstellungen“. Dieses Dialogfeld laden Sie, indem Sie mit der rechten Maustaste (Windows) oder bei gedrückter Ctrl-Taste (Mac) im Browser auf Flash Player-Inhalt klicken. Wählen Sie die Registerkarte „Anzeige“ und aktivieren Sie das Kontrollkästchen „Hardwarebeschleunigung aktivieren“. Direkt- und GPU-Compositing-FenstermodiFlash Player 10 führt zwei Fenstermodi ein, „Direkt“ und „GPU-Compositing“, die Sie mithilfe der Veröffentlichungseinstellungen im Flash-Authoring-Tool aktivieren können. Diese Modi werden in AIR nicht unterstützt. Um diese Modi zu nutzen, müssen Sie die Hardwarebeschleunigung für Flash Player aktivieren. Im Direktmodus werden Grafiken auf dem schnellsten, direktesten Pfad auf den Bildschirm gebracht, was bei der Videowiedergabe vorteilhaft ist. Im GPU-Compositing-Modus wird das Compositing mithilfe der Graphikverarbeitungseinheit (Graphics Processing Unit, GPU) auf der Grafikkarte beschleunigt. Bei Video-Compositing handelt es sich um das Verfahren, bei dem mehrere Bilder übereinandergeschichtet werden, um ein Videobild zu erstellen. Durch die Beschleunigung des Compositing mithilfe der GPU kann die Leistung bei der YUV- Konvertierung, Farbkorrektur, Drehung, Skalierung und Mischung verbessert werden. YUV-Konvertierung verweist auf die Farbkonvertierung von zusammengesetzten, bei der Übertragung verwendeten Analogsignalen in das RGB-Farbmodell (rot, grün, blau), das von Videokameras und Bildschirmen verwendet wird. Durch die Beschleunigung des Compositing mithilfe der GPU werden die Speicher- und Rechenanforderungen verringert, die andernfalls an die CPU gestellt würden. Außerdem führt sie zu einer glatteren Wiedergabe von standardmäßigen Videos. Gehen Sie bei der Implementierung dieser Fenstermodi vorsichtig vor. Das GPU-Compositing kann hohe Ansprüche an die Speicher- und CPU-Ressourcen stellen. Wenn Vorgänge (wie z. B. Mischmodi, Filtern, Zuschneiden oder Maskieren) nicht in der GPU ausgeführt werden können, müssen sie von der Software ausgeführt werden. Adobe empfiehlt, sich bei Verwendung dieser Modi auf eine SWF-Datei pro HTML-Seite zu beschränken, und rät davon ab, diese Modi für Banner zu aktivieren. Die Funktion „Film testen“ von Flash setzt keine Hardwarebeschleunigung ein, Sie können Sie aber über die Option „Vorschau für Veröffentlichungen“ verwenden. Wenn Sie in der SWF-Datei eine Bildrate von über 60 einstellen, ist die maximale Aktualisierungsrate des Bildschirms nutzlos. Bei einer Bildrate zwischen 50 und 55 werden übersprungene Bilder in Betracht gezogen, die hin und wieder aus verschiedenen Gründen auftreten können. Für den Direktmodus ist Microsoft DirectX 9 mit 128 MB VRAM unter Windows bzw. OpenGL unter Apple Macintosh, Mac OS X v10.2 oder höher erforderlich. Für das GPU-Compositing ist Microsoft DirectX 9 und Pixel Shader 2.0-Unterstützung unter Windows mit 128 MB VRAM erforderlich. Unter Mac OS X und Linux sind für das GPU-Compositing OpenGL 1.5 sowie mehrere OpenGL-Erweiterungen erforderlich (Framebuffer-Objekt, Multitexture, Shader-Objekte, Shading Language, Fragment-Shader). Sie können die Beschleunigungsmodi direct und gpu für einzelne SWF-Dateien aktivieren. Klicken Sie dazu im Dialogfeld „Einstellungen für Veröffentlichungen“ auf die Registerkarte „Flash“ und rufen Sie hier das Menü „Hardwarebeschleunigung“ auf. Wenn Sie „Keine“ auswählen, wird der Fenstermodus auf die entsprechende Einstellung in der Registerkarte „HTML“ zurückgesetzt, d. h. default, transparent oder opaque. |
|