套件 | flash.display |
類別 | public final class Screen |
繼承 | Screen EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0 |
在較大的「虛擬桌面」中,各個螢幕都是獨立的桌面區域。虛擬桌面的原點位於作業系統指定之主要螢幕的左上角。因此,每個顯示螢幕的邊界座標可能會是負值。況且,也可能會有不在任何顯示螢幕中的虛擬桌面區域。
Screen 類別包含靜態類別成員,可供存取可用的螢幕物件和實體成員,這些物件和成員可供存取個別螢幕的屬性。您不應該快取螢幕資訊,因為使用者可能會隨時變更此資訊。
請注意,螢幕 (Screen) 和連接至電腦的實體螢幕 (Monitor) 之間的關係,不一定要是一對一的對應關係。例如,兩個螢幕 (Monitor) 可以同時顯示相同的螢幕 (Screen)。
您無法直接將 Screen 類別實體化。呼叫 new Screen()
建構函式會擲回 ArgumentError
例外。
屬性 | 定義自 | ||
---|---|---|---|
bounds : Rectangle [唯讀]
此螢幕的邊界。 | Screen | ||
colorDepth : int [唯讀]
此螢幕的顏色深度 (以位元數表示)。 | Screen | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
mainScreen : Screen [靜態] [唯讀]
主要螢幕。 | Screen | ||
mode : ScreenMode
Screen 物件的目前螢幕模式。 | Screen | ||
modes : Array [唯讀]
Screen 物件的 ScreenMode 物件陣列。 | Screen | ||
screens : Array [靜態] [唯讀]
目前可用的螢幕陣列。 | Screen | ||
visibleBounds : Rectangle [唯讀]
此螢幕上可見視窗的區域邊界。 | Screen |
方法 | 定義自 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
[靜態]
傳回與提供之矩形相交的螢幕集合 (可能是空的)。 | Screen | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
bounds | 屬性 |
bounds:Rectangle
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0 |
此螢幕的邊界。
此螢幕位置會相對於虛擬桌面。
在使用特定視窗管理員的 Linux 系統上,此屬性會傳回桌面邊界,而不是螢幕的邊界。
實作
public function get bounds():Rectangle
範例 ( 如何使用本範例 )
import flash.display.Screen; import flash.geom.Rectangle; var mainScreen:Screen = Screen.mainScreen; var screenBounds:Rectangle = mainScreen.bounds;
colorDepth | 屬性 |
mainScreen | 屬性 |
mode | 屬性 |
mode:ScreenMode
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 29.0 |
Screen 物件的目前螢幕模式。mode
屬性表示特定螢幕裝置的目前螢幕模式。
實作
public function get mode():ScreenMode
public function set mode(value:ScreenMode):void
modes | 屬性 |
screens | 屬性 |
visibleBounds | 屬性 |
visibleBounds:Rectangle
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0 |
此螢幕上可見視窗的區域邊界。
螢幕的 visibleBounds
不包括 Windows 中的工作列 (以及其它停駐桌面工具列) 和 Mac OS X 中的選單列 (與停駐列,視系統設定而異)。某些 Linux 組態根本無從判斷可見邊界。若是如此,則 visibleBounds
屬性的傳回值將與 screenBounds
屬性相同。
實作
public function get visibleBounds():Rectangle
範例 ( 如何使用本範例 )
import flash.display.Screen; import flash.geom.Rectangle; var mainScreen:Screen = Screen.mainScreen; var screenBounds:Rectangle = mainScreen.visibleBounds;
getScreensForRectangle | () | 方法 |
public static function getScreensForRectangle(rect:Rectangle):Array
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0 |
傳回與提供之矩形相交的螢幕集合 (可能是空的)。
參數
rect:Rectangle — 其座標相對於虛擬桌面之原點 (位於主要螢幕的左上角) 的矩形。
|
Array — 包含螢幕 (具有 rect 參數所定義的任何部分區域) 之 Screen 物件的陣列。
|
範例 ( 如何使用本範例 )
import flash.display.Screen; import flash.geom.Rectangle; var rect:Rectangle = new Rectangle(-200, 100, 1000, 600); var intersectedScreens:Array = Screen.getScreensForRectangle(rect);
- 回應鍵盤事件,以判斷要停駐在螢幕的哪一側。
- 存取靜態 Screen 類別方法
getScreensForRectangle()
,以取得視窗正在其中顯示之螢幕的 Screen 物件。 - 根據螢幕的尺寸,重設視窗的邊界。
- 根據新的視窗尺寸,重繪視窗內容。
請注意,此類別是當做具有 SystemChrome="none"
和 transparent="true"
設定之 AIR 應用程式的根類別來使用。如果要在具有系統顏色的視窗中使用此類別,計算視窗大小和位置時必須將視窗的顏色厚度和最小寬度納入考量。
package { import flash.display.Screen; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.geom.Rectangle; import flash.ui.Keyboard; public class DockingWindow extends Sprite { private const dockedWidth:uint = 80; private const dockedHeight:uint = 80; public function DockingWindow():void{ stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey); dockLeft(); } private function onKey(event:KeyboardEvent):void{ switch(event.keyCode){ case Keyboard.LEFT : dockLeft(); break; case Keyboard.RIGHT : dockRight(); break; case Keyboard.UP : dockTop(); break; case Keyboard.DOWN : dockBottom(); break; case Keyboard.SPACE : stage.nativeWindow.close(); } } public function dockLeft():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.top; stage.nativeWindow.height = screen.visibleBounds.height; stage.stageWidth = dockedWidth; drawContent(); } public function dockRight():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.width - dockedWidth; stage.nativeWindow.y = screen.visibleBounds.top; stage.stageWidth = dockedWidth; stage.nativeWindow.height = screen.visibleBounds.height; drawContent(); } public function dockTop():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.top; stage.nativeWindow.width = screen.visibleBounds.width; stage.stageHeight = dockedHeight; drawContent(); } public function dockBottom():void{ var screen:Screen = getCurrentScreen(); stage.nativeWindow.x = screen.visibleBounds.left; stage.nativeWindow.y = screen.visibleBounds.height - dockedHeight; stage.nativeWindow.width = screen.visibleBounds.width; stage.stageHeight = dockedHeight; drawContent(); } private function getCurrentScreen():Screen{ return Screen.getScreensForRectangle(stage.nativeWindow.bounds)[0]; } private function drawContent():void{ const size:int = 60; const pad:int = 10; var numHSquares:int = Math.floor(stage.stageWidth/(size + pad)); var numVSquares:int = Math.floor(stage.stageHeight/(size + pad)); with (graphics){ clear(); lineStyle(1); beginFill(0x3462d5,.7); for(var i:int = 0; i < numHSquares; i++){ for(var j:int = 0; j < numVSquares; j++){ drawRect((i * (size + pad)) + pad, (j * (size + pad)) + pad, size, size); } } endFill(); } } } }
Tue Jun 12 2018, 03:47 PM Z