(仅限 AIR)
flash.display
public final class Screen
继承Screen Inheritance EventDispatcher Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

Screen 类提供此应用程序的可用显示屏幕的相关信息。

屏幕是位于可能更大的“虚拟桌面”内的独立桌面区域。虚拟桌面的原点是操作系统指定的主屏幕的左上角。因此,个别显示屏幕范围的坐标可能是负数。虚拟桌面也可能有一些不在任何显示屏幕内的区域。

Screen 类包括用于访问可用屏幕对象的静态类成员和用于访问个别屏幕属性的实例成员。屏幕信息不应进行缓存,因为这些信息可能会由用户随时更改。

请注意,屏幕和连接到计算机的物理监视器之间不一定有一对一的对应关系。例如,两台监视器可以显示同一个屏幕。

无法直接实例化 Screen 类。调用 new Screen() 构造函数将引发 ArgumentError 异常。

查看示例



公共属性
 属性定义方
  AIR-only bounds : Rectangle
[只读 (read-only)] 此屏幕的范围。
Screen
  AIR-only colorDepth : int
[只读 (read-only)] 此屏幕的颜色深度(以位数为单位)。
Screen
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  AIR-only mainScreen : Screen
[静态] [只读 (read-only)] 主显示器。
Screen
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  AIR-only screens : Array
[静态] [只读 (read-only)] 当前可用的屏幕的数组。
Screen
  AIR-only visibleBounds : Rectangle
[只读 (read-only)] 此屏幕上窗口可见区域的范围。
Screen
公共方法
 方法定义方
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
  
[静态] 返回一组与提供的矩形相交的屏幕(可能为空)。
Screen
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
属性详细信息
AIR-only bounds属性
bounds:Rectangle  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

此屏幕的范围。

屏幕位置相对于虚拟桌面。



实现
    public function get bounds():Rectangle

示例
下面的示例显示如何获取屏幕(在本例中为主显示屏幕)的范围:
import flash.display.Screen;
import flash.geom.Rectangle;

var mainScreen:Screen = Screen.mainScreen;
var screenBounds:Rectangle = mainScreen.bounds;
AIR-only colorDepth属性 
colorDepth:int  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

此屏幕的颜色深度(以位数为单位)。



实现
    public function get colorDepth():int

示例
下面的示例显示如何获取屏幕(在本例中为主显示屏幕)的颜色深度:
var mainScreen:Screen = Screen.mainScreen;
var colors:uint = mainScreen.colorDepth;
AIR-only mainScreen属性 
mainScreen:Screen  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

主显示器。



实现
    public static function get mainScreen():Screen

示例
下面的示例显示如何获取表示此计算机的“主”屏幕的 Screen 对象。
var primaryScreen:Screen = Screen.mainScreen;
AIR-only screens属性 
screens:Array  [只读 (read-only)]

语言版本: ActionScript 3.
运行时版本: AIR 1.0

当前可用的屏幕的数组。

修改返回的数组对可用的屏幕没有任何效果。



实现
    public static function get screens():Array

示例
下面的示例显示如何获取包含可用屏幕的数组:
var screenArray:Array = Screen.screens;
AIR-only visibleBounds属性 
visibleBounds:Rectangle  [只读 (read-only)]

语言版本: 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;
方法详细信息
AIR-only getScreensForRectangle()方法
public static function getScreensForRectangle(rect:Rectangle):Array

语言版本: ActionScript 3.0
运行时版本: AIR 1.0

返回一组与提供的矩形相交的屏幕(可能为空)。

参数

rect:Rectangle — 一个具有相对于虚拟桌面原点(主屏幕的左上角)的坐标的矩形。

返回
Array — 包含屏幕的 Screen 对象的数组,这些屏幕包含由 rect 参数定义的区域的任何部分。

示例

下面的示例显示如何获取至少包含给定矩形一部分的屏幕的数组:
import flash.display.Screen;
import flash.geom.Rectangle;

var rect:Rectangle = new Rectangle(-200, 100, 1000, 600);
var intersectedScreens:Array = Screen.getScreensForRectangle(rect);
示例 如何使用示例
ScreenExample.as

下面的示例通过定义 DockingWindow 类来创建一个停靠在屏幕某一侧的窗口。执行下列步骤可完成该任务:
  1. 响应键盘事件以确定停靠在屏幕的哪一侧。
  2. 访问静态 Screen 类方法 getScreensForRectangle() 可以获取当前显示该窗口的屏幕的 Screen 对象。
  3. 根据屏幕尺寸重新设置窗口范围。
  4. 根据新窗口尺寸重新绘制窗口内容。

请注意,此类旨在用作具有 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();
            }
        }
    }
}