Mithilfe der Eigenschaften und Methoden der NativeWindow-Klasse verwalten Sie das Erscheinungsbild, das Verhalten und den Lebenszyklus von Desktopfenstern.
Hinweis:
Wenn Sie mit dem Flex-Framework arbeiten, ist es im Allgemeinen besser, das Fensterverhalten mithilfe der Framework-Klassen zu verwalten. Auf die meisten NativeWindow-Eigenschaften und -Methoden können Sie über die mx:WindowedApplication- und mx:Window-Klasse zugreifen.
Abrufen einer NativeWindow-Instanz
Um ein Fenster bearbeiten zu können, müssen Sie zuerst die Window-Instanz abrufen. Eine Window-Instanz können Sie von einem der folgenden Orte abrufen:
-
Der native Fensterkonstruktor, der zum Erstellen des Fensters verwendet wird:
var win:NativeWindow = new NativeWindow(initOptions);
-
Die
nativeWindow
-Eigenschaft der Fensterbühne:
var win:NativeWindow = stage.nativeWindow;
-
Die
stage
-Eigenschaft eines Anzeigeobjekts im Fenster:
var win:NativeWindow = displayObject.stage.nativeWindow;
-
Die
target
-Eigenschaft eines nativen Fensterereignisses, das vom Fenster ausgelöst wird:
private function onNativeWindowEvent(event:NativeWindowBoundsEvent):void
{
var win:NativeWindow = event.target as NativeWindow;
}
-
Die
nativeWindow
-Eigenschaft einer HTML-Seite, die im Fenster angezeigt wird:
var win:NativeWindow = htmlLoader.window.nativeWindow;
-
Die
activeWindow
- und
openedWindows
-Eigenschaften des NativeApplication-Objekt:
var nativeWin:NativeWindow = NativeApplication.nativeApplication.activeWindow;
var firstWindow:NativeWindow = NativeApplication.nativeApplication.openedWindows[0];
NativeApplication.nativeApplication.activeWindow
verweist auf das aktive Fenster einer Anwendung (gibt jedoch
null
zurück, wenn es sich bei dem aktiven Fenster nicht um ein Fenster dieser AIR-Anwendung handelt). Das
NativeApplication.nativeApplication.openedWindows
-Array enthält alle Fenster in einer AIR-Anwendung, die nicht geschlossen wurden.
Da es sich bei den Flex-Objekten mx:WindowedApplication und mx:Window um Anzeigeobjekte handelt, können Sie in einer MXML-Datei mithilfe der
stage
-Eigenschaft wie folgt leicht auf das Anwendungsfenster verweisen:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="init();">
<mx:Script>
<![CDATA[
import flash.display.NativeWindow;
public function init():void{
var appWindow:NativeWindow = this.stage.nativeWindow;
//set window properties
appWindow.visible = true;
}
]]>
</mx:Script>
</WindowedApplication
Hinweis:
Solange die WindowedApplication- oder Window-Komponente noch nicht vom Flex-Framework zur Fensterbühne hinzugefügt wurde, lautet die
stage
-Eigenschaft der Komponente
null
. Dieses Verhalten entspricht dem der Flex Application-Komponente. Es bedeutet jedoch, dass Sie nicht auf die Bühne oder die NativeWindow-Instanz in Ereignis-Listenern zugreifen können, die zu einem früheren Zeitpunkt im Initialisierungszyklus der WindowedApplication- und Window-Komponenten auftreten, wie etwa
creationComplete
. Nachdem das
applicationComplete
-Ereignis ausgelöst wurde, können Sie problemlos auf die Bühne und die NativeWindow-Instanz zugreifen.
Aktivieren, Anzeigen und Ausblenden von Fenstern
Sie aktivieren ein Fenster, indem Sie die
activate()
-Methode von NativeWindow aufrufen. Durch das Aktivieren wird das Fenster in den Vordergrund gestellt, es erhält den Tastatur- und Mausfokus und wird, bei Bedarf, sichtbar gemacht, indem das Fenster wiederhergestellt oder die
visible
-Eigenschaft auf
true
eingestellt wird. Durch das Aktivieren eines Fensters wird die Reihenfolge der anderen Fenster in der Anwendung nicht verändert. Durch das Aufrufen der
activate()
-Methode wird das Fenster veranlasst, ein
activate
-Ereignis auszulösen.
Um ein Fenster einzublenden. ohne es zu aktivieren, stellen Sie seine
visible
-Eigenschaft auf
true
ein. Dadurch wird das Fenster in den Vordergrund gestellt, erhält aber nicht den Fokus.
Um ein Fenster auszublenden, stellen Sie seine
visible
-Eigenschaft auf
false
ein. Durch das Ausblenden des Fensters wird die Anzeige des Fensters und dazugehöriger Taskleisten-Symbole, sowie, unter Mac OS X, der Eintrag im Windows-Menü unterdrückt.
Wenn Sie die Sichtbarkeit eines Fensters ändern, ändert sich auch die Sichtbarkeit der Fenster, die sich im Besitz des jeweiligen Fensters befinden. Wenn Sie beispielsweise ein Fenster ausblenden, werden auch alle Fenster, die dieses Fenster besitzt, ausgeblendet.
Hinweis:
Unter Mac OS X ist es nicht möglich, ein minimiertes Fenster vollständig zu verbergen, das über ein Symbol im Fensterbereich des Docks verfügt. Ist bei einem minimierten Fenster die
visible
-Eigenschaft auf
false
eingestellt, wird das Dock-Symbol des Fensters weiterhin angezeigt. Durch Klicken auf das Symbol wird das Fenster wieder angezeigt.
Ändern der Anzeigereihenfolge von Fenstern
AIR bietet mehrere Methoden, mit denen die Anzeigereihenfolge der Fernster direkt geändert werden kann. Sie können ein Fenster an den Anfang oder das Ende der Anzeigereihenfolge verschieben, und Sie können ein Fenster vor oder hinter ein anderes Fenster verschieben. Außerdem können Sie die Anzeigereihenfolge von Fenstern ändern, indem Sie sie aktivieren.
Sie können dafür sorgen, dass ein Fenster immer vor anderen Fenstern angezeigt wird, indem Sie seine
alwaysInFront
-Eigenschaft auf
true
einstellen. Wenn mehrere Fenster diese Einstellung aufweisen, wird eine Anzeigereihenfolge unter diesen Fenstern erstellt, sie werden aber immer vor Fenstern angezeigt, deren
alwaysInFront
-Eigenschaft auf „false“ eingestellt ist.
Fenster in der obersten Gruppe werden außerdem vor Fenstern in anderen Anwendungen angezeigt, selbst wenn die AIR-Anwendung nicht aktiv ist. Da sich dieses Verhalten störend auf den Benutzer auswirken kann, sollte
alwaysInFront
nur auf
true
eingestellt werden, wenn es erforderlich und angemessen ist. Beispiele:
-
Temporäre Popupfenster für Steuereinheiten, wie etwa QuickInfos, Popuplisten, benutzerdefinierte Menüs oder Kombinationsfelder. Da diese Fenster geschlossen werden, wenn sie den Fokus verlieren, wird Benutzern nicht die Sicht auf andere Fenster genommen und sie fühlen sich nicht gestört.
-
Sehr dringende Fehlermeldungen und Warnungen. Wenn eine unwiderrufliche Änderung auftreten kann, falls der Benutzer nicht rechtzeitig reagiert, kann es gerechtfertigt sein, eine Warnmeldung im Vordergrund einzublenden. Die meisten Fehlermeldungen und Warnungen können jedoch in der normalen Anzeigereihenfolge der Fenster verarbeitet werden.
-
Kurzfristige überlappende Fenster
Hinweis:
AIR erzwingt nicht die korrekte Verwendung der
alwaysInFront
-Eigenschaft. Wenn der Workflow eines Benutzers jedoch von Ihrer Anwendung unterbrochen wird, wird sie wahrscheinlich dem Papierkorb dieses Benutzers übergeben.
Wenn ein Fenster andere Fenster besitzt, werden diese Fenster immer vor dem übergeordneten Fenster angeordnet. Wenn Sie für ein Fenster, das andere Fenster besitzt,
orderToFront()
aufrufen oder
alwaysInFront
auf
true
einstellen, werden die untergeordneten Fenster zusammen mit dem Besitzerfenster vor anderen Fenstern angeordnet, aber die untergeordneten Fenster werden immer vor dem Besitzerfenster angezeigt.
Das Aufrufen von Methoden zur Fensteranordnung für Fenster, die sich im Besitz eines anderen Fensters befinden, funktioniert normal, vorausgesetzt, alle Fenster haben denselben Besitzer; es ist jedoch möglich, dass sich die Anordnung aller untergeordneten Fenster relativ zu den Fenstern ändert, die nicht zur Gruppe gehören. Wenn Sie beispielsweise für ein Fenster, das sich im Besitz eines anderen Fensters befindet,
orderToFront()
aufrufen, wird dieses Fenster zusammen mit seinem Besitzerfenster und allen anderen Fenstern, die denselben Besitzer haben, in der Reihenfolge der Fensteranzeige ganz nach vorne verschoben.
Die NativeWindow-Klasse bietet die folgenden Eigenschaften und Methoden, mit denen die Anzeigereihenfolge eines Fensters relativ zu anderen Fenstern festgelegt werden kann:
Mitglied
|
Beschreibung
|
alwaysInFront-Eigenschaft
|
Gibt an, ob das Fenster in der obersten Fenstergruppe angezeigt wird.
In fast allen Fällen ist
false
die beste Einstellung. Durch eine Änderung des Werts von
false
in
true
wird das Fenster vor allen anderen Fenstern angezeigt (es wird jedoch nicht aktiviert). Beim Ändern des Werts von
true
in
false
wird das Fenster hinter die anderen Fenster in der obersten Gruppe gestellt, es bleibt jedoch vor anderen Fenstern. Wenn die Eigenschaft auf ihren aktuellen Wert eingestellt wird, ändert sich die Anzeigereihenfolge der Fenster nicht.
Die
alwaysInFront
-Einstellung hat keine Auswirkung auf Fenster, die sich im Besitz eines anderen Fensters befinden.
|
orderToFront()
|
Stellt das Fenster in den Vordergrund.
|
orderInFrontOf()
|
Stellt das Fenster direkt vor ein bestimmtes Fenster.
|
orderToBack()
|
Stellt das Fenster hinter andere Fenster.
|
orderBehind()
|
Stellt das Fenster direkt hinter ein bestimmtes Fenster.
|
activate()
|
Stellt das Fenster in den Vordergrund (blendet es ein und weist ihm den Fokus zu).
|
Hinweis:
Das Aufrufen der Methoden für die Anzeigereihenfolge hat keine Wirkung, wenn ein Fenster ausgeblendet (der Wert für
visible
lautet
false
) oder minimiert ist.
Unter dem Linux-Betriebssystem erzwingen verschiedene Fenstermanager unterschiedliche Regeln bezüglich der Anzeigereihenfolge der Fenster:
-
Bei einigen Fenstermanagern werden Dienstprogrammfenster vor normalen Fenstern angezeigt.
-
Bei bestimmten Fenstermanagern wird ein Vollbildfenster, dessen
alwaysInFront
-Eigenschaft auf
true
eingestellt ist, immer vor anderen Fenstern angezeigt, bei denen
alwaysInFront
ebenfalls auf
true
eingestellt ist.
Schließen von Fenstern
Sie können ein Fenster mithilfe der
NativeWindow.close()
-Methode schließen.
Beim Schließen eines Fensters werden die Inhalte des Fenster entfernt, wenn jedoch andere Objekte auf diesen Inhalt verweisen, werden die Inhaltsobjekte nicht gelöscht. Die
NativeWindow.close()
-Methode wird asynchron ausgeführt, und die im Fenster enthaltene Anwendung wird während des Schließvorgangs ausgeführt. Die close-Methode löst ein close-Ereignis aus, wenn der Schließvorgang abgeschlossen ist. Das NativeWindow-Objekt ist im Prinzip noch gültig, aber der Zugriff auf die meisten Eigenschaften und Methoden eines geschlossenen Fensters erzeugt einen IllegalOperationError. Ein geschlossenes Fenster kann nicht erneut geöffnet werden. Überprüfen Sie die
closed
-Eigenschaft eines Fensters, um zu prüfen, ob das Fenster geschlossen wurde. Um ein Fenster einfach nur auszublenden, stellen Sie seine
NativeWindow.visible
-Eigenschaft auf
false
ein.
Ist die
Nativeapplication.autoExit
-Eigenschaft auf
true
eingestellt (die Standardeinstellung ), wird die Anwendung mit dem Schließen ihres letzten Fensters beendet.
Jedes Fenster, das sich im Besitz eines anderen Fensters befindet, wird zusammen mit seinem Besitzerfenster geschlossen. Die Fenster, die sich im Besitz eines anderen Fensters befinden, lösen kein closing-Ereignis aus und können das Schließen daher nicht verhindern. Ein close-Ereignis wird ausgelöst.
Abbrechen von Fenstervorgängen ermöglichen
Wurde einem Fenster das System-Fensterdesign zugewiesen, können Benutzerinteraktionen mit dem Fenster abgebrochen werden, indem auf Standardverhalten der entsprechenden Ereignisse gewartet wird, um sie anschließend abzubrechen. Wenn beispielsweise ein Benutzer auf die Schaltfläche „Schließen“ des System-Fensterdesigns klickt, wird das
closing
-Ereignis ausgelöst. Wird die
preventDefault()
-Methode des Ereignisses durch einen registrierten Listener aufgerufen, wird das Fenster nicht geschlossen.
Wenn einem Fenster nicht das System-Fensterdesign zugewiesen wurde, werden Benachrichtigungsereignisse für beabsichtigte Änderungen nicht automatisch vor der Änderung ausgelöst. Das bedeutet, wenn die Methoden zum Schließen eines Fensters oder Ändern des Fensterzustands aufgerufen werden, oder eine der bound-Eigenschaften des Fensters einstellt wird, kann die Änderung nicht abgebrochen werden. Die Anwendungslogik kann das relevante Benachrichtigungsereignis mithilfe der
dispatchEvent()
-Methode des Fensters auslösen, um Komponenten in Ihrer Anwendung auf bevorstehende Fensteränderungen hinzuweisen.
Im folgenden Beispiel wird eine abbrechbare Ereignisprozedur für die Schaltfläche „Schließen“ eines Fensters implementiert:
public function onCloseCommand(event:MouseEvent):void{
var closingEvent:Event = new Event(Event.CLOSING,true,true);
dispatchEvent(closing);
if(!closingEvent.isDefaultPrevented()){
win.close();
}
}
Die
dispatchEvent()
-Methode gibt
false
zurück, wenn die
preventDefault()
-Ereignismethode durch einen Listener aufgerufen wird. Da sie jedoch auch aus anderen Gründen
false
zurückgeben kann, empfiehlt es sich, mithilfe der
isDefaultPrevented()
-Methode ausdrücklich zu prüfen, ob die Änderungen abgebrochen werden sollen.
Maximieren, Minimieren und Wiederherstellen von Fenstern
Sie können ein Fenster mithilfe der
maximize()
-Methode der NativeWindow-Klasse maximieren.
myWindow.maximize();
Sie können ein Fenster mithilfe der
minimize()
-Methode der NativeWindow-Klasse minimieren.
myWindow.minimize();
Mithilfe der
restore()
-Methode der NativeWindow-Klasse können Sie ein Fenster wiederherstellen, d. h. die Größe auf den Wert vor dem Minimieren oder Maximieren zurücksetzen.
myWindow.restore();
Ein Fenster, das sich im Besitz eines anderen Fensters befindet, wird zusammen mit dem Besitzerfenster minimiert und wiederhergestellt. Wenn ein Fenster, das sich im Besitz eines anderen Fensters befindet, zusammen mit dem Besitzerfenster minimiert wird, löst es keine Ereignisse aus.
Hinweis:
Das aus dem Maximieren eines AIR-Fensters resultierende Verhalten unterscheidet sich vom Standardverhalten unter Mac OS X. Statt zwischen einer durch die Anwendung definierten „Standardgröße“ und der letzten durch den Benutzer eingestellten Größe umzuschalten, wird bei AIR-Fenstern zwischen der zuletzt durch die Anwendung oder den Benutzer eingestellten Größe und dem gesamten verwendbaren Bildschirmbereich umgeschaltet.
Unter dem Linux-Betriebssystem erzwingen verschiedene Fenstermanager unterschiedliche Regeln bezüglich der Einstellung des Anzeigestatus der Fenster:
-
Unter einigen Fenstermanagern können Dienstprogrammfenster nicht maximiert werden.
-
Wenn für ein Fenster eine maximale Größe festgelegt wurde, lassen einige Fenstermanager die Maximierung des Fensters nicht zu. Andere Fenstermanager maximieren den Anzeigestatus, ändern aber nicht die Größe des Fensters. In beiden Fällen wird kein Ereignis für die Anzeigestatusänderung ausgelöst.
-
Einige Fenstermanager berücksichtigen die
maximizable
- oder
minimizable
-Einstellungen des Fensters nicht.
Hinweis:
Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie den Anzeigestatus in einer Programmzeile ändern und den Wert in der nächsten Zeile lesen, gibt der gelesene Wert immer noch die alte Einstellung an. Auf allen Plattformen löst das NativeWindow-Objekt das
displayStateChange
-Ereignis aus, wenn sich der Anzeigestatus ändert. Wenn Sie Aktionen ausführen müssen, die auf dem neuen Status des Fensters basieren, verwenden Sie dazu eine
displayStateChange
-Ereignisprozedur. Lesen Sie dazu
Warten auf Window-Ereignisse
.
Beispiel: Minimieren, Maximieren, Wiederherstellen und Schließen von Fenstern
Anhand der folgenden kurzen MXML-Anwendung werden die
maximize()
-,
minimize()
-,
restore()
- und
close()
-Methoden der Window-Klasse verdeutlicht:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical">
<mx:Script>
<![CDATA[
public function minimizeWindow():void
{
this.stage.nativeWindow.minimize();
}
public function maximizeWindow():void
{
this.stage.nativeWindow.maximize();
}
public function restoreWindow():void
{
this.stage.nativeWindow.restore();
}
public function closeWindow():void
{
this.stage.nativeWindow.close();
}
]]>
</mx:Script>
<mx:VBox>
<mx:Button label="Minimize" click="minimizeWindow()"/>
<mx:Button label="Restore" click="restoreWindow()"/>
<mx:Button label="Maximize" click="maximizeWindow()"/>
<mx:Button label="Close" click="closeWindow()"/>
</mx:VBox>
</mx:WindowedApplication>
Im folgenden ActionScript-Beispiel für Flash werden vier klickbare Textfelder erstellt, mit denen die
minimize()
-,
maximize()
-,
restore()
- und
close()
-Methoden der NativeWindow-Klasse ausgelöst werden:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
public class MinimizeExample extends Sprite
{
public function MinimizeExample():void
{
var minTextBtn:TextField = new TextField();
minTextBtn.x = 10;
minTextBtn.y = 10;
minTextBtn.text = "Minimize";
minTextBtn.background = true;
minTextBtn.border = true;
minTextBtn.selectable = false;
addChild(minTextBtn);
minTextBtn.addEventListener(MouseEvent.CLICK, onMinimize);
var maxTextBtn:TextField = new TextField();
maxTextBtn.x = 120;
maxTextBtn.y = 10;
maxTextBtn.text = "Maximize";
maxTextBtn.background = true;
maxTextBtn.border = true;
maxTextBtn.selectable = false;
addChild(maxTextBtn);
maxTextBtn.addEventListener(MouseEvent.CLICK, onMaximize);
var restoreTextBtn:TextField = new TextField();
restoreTextBtn.x = 230;
restoreTextBtn.y = 10;
restoreTextBtn.text = "Restore";
restoreTextBtn.background = true;
restoreTextBtn.border = true;
restoreTextBtn.selectable = false;
addChild(restoreTextBtn);
restoreTextBtn.addEventListener(MouseEvent.CLICK, onRestore);
var closeTextBtn:TextField = new TextField();
closeTextBtn.x = 340;
closeTextBtn.y = 10;
closeTextBtn.text = "Close Window";
closeTextBtn.background = true;
closeTextBtn.border = true;
closeTextBtn.selectable = false;
addChild(closeTextBtn);
closeTextBtn.addEventListener(MouseEvent.CLICK, onCloseWindow);
}
function onMinimize(event:MouseEvent):void
{
this.stage.nativeWindow.minimize();
}
function onMaximize(event:MouseEvent):void
{
this.stage.nativeWindow.maximize();
}
function onRestore(event:MouseEvent):void
{
this.stage.nativeWindow.restore();
}
function onCloseWindow(event:MouseEvent):void
{
this.stage.nativeWindow.close();
}
}
}
Skalieren und Verschieben von Fenstern
Wurde einem Fenster das System-Fensterdesign zugewiesen, stehen dadurch Haltegriffe zur Verfügung, um durch Ziehen die Größe des Fensters zu skalieren und um es auf dem Desktop zu verschieben. Wenn einem Fenster nicht das System-Fensterdesign zugewiesen wurde, müssen Sie selbst dem Fenster Steuerelemente hinzufügen, um dem Benutzer das Skalieren und Verschieben des Fensters zu ermöglichen.
Hinweis:
Um ein Fenster zu skalieren oder zu verschieben, müssen Sie zuerst einen Verweis auf die NativeWindow-Instanz abrufen. Weitere Informationen zum Abrufen einer Fensterreferenz finden Sie unter
Abrufen einer NativeWindow-Instanz
.
Skalieren von Fenstern
Damit ein Benutzer die Größe eines Fensters interaktiv ändern kann, verwenden Sie die NativeWindow-Methode
startResize()
. Wenn diese Methode durch ein
mouseDown
-Ereignis aufgerufen wird, wird der Skalierungsvorgang von der Maus bestimmt. Er wird beendet, wenn das Betriebssystem ein
mouseUp
-Ereignis empfängt. Beim Aufrufen von
startResize()
wird ein Argument übergeben, das die Kante oder die Ecke angibt, ab der das Fenster skaliert wird.
Um die Fenstergröße programmgesteuert festzulegen, stellen Sie die Eigenschaften
width
,
height
oder
bounds
des Fensters auf die gewünschten Größen. Wenn Sie die Ränder festlegen, können die Fenstergröße und -position gleichzeitig geändert werden. Die Reihenfolge, in der die Änderungen wirksam werden, ist jedoch nicht gewährleistet. Einige Linux-Fenstermanager lassen nicht zu, dass sich Fenster über die Grenzen des Desktopbildschirms hinaus erstrecken. In diesen Fällen kann die endgültige Fenstergröße aufgrund der Reihenfolge, in der die Eigenschaften festgelegt werden, beschränkt sein, selbst wenn der tatsächliche Effekt der Änderungen andernfalls zu einem zulässigen Fenster geführt hätte. Wenn Sie zum Beispiel Höhe und Position eines Fensters im unteren Bereich des Bildschirms ändern, wird die vollständige Höhenänderung ggf. nicht umgesetzt, wenn die Höhenänderung vor der Änderung der y-Position vorgenommen wird.
Hinweis:
Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie die Größe eines Fensters in einer Zeile Ihres Programms ändern und dann in der nächsten Zeile die Abmessungen lesen, stellen sie immer noch die alten Einstellungen dar. Auf allen Plattformen löst das NativeWindow-Objekt das
resize
-Ereignis aus, wenn die Größe des Fensters geändert wird. Wenn Sie Aktionen ausführen müssen, die auf der neuen Größe oder dem neuen Status des Fensters basieren, zum Beispiel Anordnen der Steuerungen im Fenster, verwenden Sie dazu immer eine
resize
-Ereignisprozedur. Lesen Sie dazu
Warten auf Window-Ereignisse
.
Der Skaliermodus der Bühne bestimmt, wie sich die Fensterbühne und ihr Inhalt bei einer Skalierung des Fensters verhält. Beachten Sie, dass die Skaliermodi der Bühne für Situationen konzipiert sind, wie etwa einen Webbrowser, in der die Anwendung nicht die Größe oder das Seitenverhältnis des Anzeigebereichs steuert. Im Allgemeinen erhalten Sie die besten Ergebisse, wenn Sie die
scaleMode
-Eigenschaft der Bühne auf
StageScaleMode.NO_SCALE
einstellen. Wenn der Inhalt des Fensters skaliert werden soll, können Sie die
scaleX
- und
scaleY
-Parameter des Inhalts als Reaktion auf die Änderungen der Fenstergrenzen einstellen.
Verschieben von Fenstern
Mithilfe der NativeWindow-Methode
startMove()
verschieben Sie ein Fenster, ohne es zu skalieren. Wie bei der
startResize()
-Methode wird beim Aufrufen der
startMove()
-Methode durch ein
mouseDown
-Ereignis der Verschiebungsvorgang von der Maus bestimmt. Er wird beendet, wenn das Betriebssystem ein
mouseUp
-Ereignis empfängt.
Weitere Informationen über die
startResize()
- und
startMove()
-Methoden finden Sie im
ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform
.
Um ein Fenster programmgesteuert zu verschieben, stellen Sie die
x
-,
y
- oder
bounds
-Eigenschaften des Fensters auf die gewünschten Werte ein. Wenn Sie die Ränder (bounds) festlegen, können die Fenstergröße und -position gleichzeitig geändert werden.
Hinweis:
Unter Linux werden Fenstereigenschaften asynchron geändert. Wenn Sie ein Fenster in einer Programmzeile verschieben und die Position in der nächsten Zeile lesen, gibt der gelesene Wert immer noch die alte Einstellung an. Auf allen Plattformen löst das NativeWindow-Objekt das
move
-Ereignis aus, wenn sich die Position ändert. Wenn Sie Aktionen ausführen müssen, die auf der neuen Position des Fensters basieren, verwenden Sie dazu eine
move
-Ereignisprozedur. Lesen Sie dazu
Warten auf Window-Ereignisse
.
Beispiel: Skalieren und Verschieben von Fenstern
Im folgenden Beispiel wird gezeigt, wie Skalierungs- und Verschiebungsvorgänge an einem Fenster eingeleitet werden:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.NativeWindowResize;
public class NativeWindowResizeExample extends Sprite
{
public function NativeWindowResizeExample():void
{
// Fills a background area.
this.graphics.beginFill(0xFFFFFF);
this.graphics.drawRect(0, 0, 400, 300);
this.graphics.endFill();
// Creates a square area where a mouse down will start the resize.
var resizeHandle:Sprite =
createSprite(0xCCCCCC, 20, this.width - 20, this.height - 20);
resizeHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartResize);
// Creates a square area where a mouse down will start the move.
var moveHandle:Sprite = createSprite(0xCCCCCC, 20, this.width - 20, 0);
moveHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartMove);
}
public function createSprite(color:int, size:int, x:int, y:int):Sprite
{
var s:Sprite = new Sprite();
s.graphics.beginFill(color);
s.graphics.drawRect(0, 0, size, size);
s.graphics.endFill();
s.x = x;
s.y = y;
this.addChild(s);
return s;
}
public function onStartResize(event:MouseEvent):void
{
this.stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
}
public function onStartMove(event:MouseEvent):void
{
this.stage.nativeWindow.startMove();
}
}
}
|
|
|