ActionScript® 3.0 Reference for the Adobe® Flash® Platform
Home  |  Show Packages and Classes List |  Packages  |  Classes  |  What's New  |  Index  |  Appendixes
flash.display 

Screen  - AS3

Packageflash.display
Classpublic final class Screen
InheritanceScreen Inheritance EventDispatcher Inheritance Object

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

The Screen class provides information about the display screens available to this application.

Screens are independent desktop areas within a possibly larger "virtual desktop." The origin of the virtual desktop is the top-left corner of the operating-system-designated main screen. Thus, the coordinates for the bounds of an individual display screen may be negative. There may also be areas of the virtual desktop that are not within any of the display screens.

The Screen class includes static class members for accessing the available screen objects and instance members for accessing the properties of an individual screen. Screen information should not be cached since it can be changed by a user at any time.

Note that there is not necessarily a one-to-one correspondance between screens and the physical monitors attached to a computer. For example, two monitors may display the same screen.

You cannot instantiate the Screen class directly. Calls to the new Screen() constructor throw an ArgumentError exception.

View the examples

More examples



Public Properties
 PropertyDefined By
      bounds : Rectangle
[read-only] The bounds of this screen.
Screen
      colorDepth : int
[read-only] The color depth of this screen (expressed in number of bits).
Screen
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
      mainScreen : Screen
[static] [read-only] The primary display.
Screen
      screens : Array
[static] [read-only] The array of the currently available screens.
Screen
      visibleBounds : Rectangle
[read-only] The bounds of the area on this screen in which windows can be visible.
Screen
Public Methods
 MethodDefined By
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event.
EventDispatcher
 Inherited
Dispatches an event into the event flow.
EventDispatcher
  
[static] Returns the (possibly empty) set of screens that intersect the provided rectangle.
Screen
 Inherited
Checks whether the EventDispatcher object has any listeners registered for a specific type of event.
EventDispatcher
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Removes a listener from the EventDispatcher object.
EventDispatcher
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
 Inherited
Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type.
EventDispatcher
Events
 Event Summary Defined By
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active.EventDispatcher
 Inherited[broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive.EventDispatcher
Property Detail
    

bounds

property
bounds:Rectangle  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

The bounds of this screen.

The screen location is relative to the virtual desktop.

On Linux systems that use certain window managers, this property returns the desktop bounds, not the screen's visible bounds.



Implementation
    public function get bounds():Rectangle

Example  ( How to use this example )
The following example shows how to get the bounds of a screen (in this case, the primary display screen):
import flash.display.Screen;
import flash.geom.Rectangle;

var mainScreen:Screen = Screen.mainScreen;
var screenBounds:Rectangle = mainScreen.bounds;
    

colorDepth

property 
colorDepth:int  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

The color depth of this screen (expressed in number of bits).



Implementation
    public function get colorDepth():int

Example  ( How to use this example )
The following example shows how to get the color depth of a screen (in this case, the primary display screen):

var mainScreen:Screen = Screen.mainScreen;
var colors:uint = mainScreen.colorDepth;
    

mainScreen

property 
mainScreen:Screen  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

The primary display.



Implementation
    public static function get mainScreen():Screen

Example  ( How to use this example )
The following example shows how to get the Screen object representing the "main" screen of this computer:

var primaryScreen:Screen = Screen.mainScreen;
    

screens

property 
screens:Array  [read-only]

Language Version: ActionScript 3.
Runtime Versions: AIR 1.0

The array of the currently available screens.

Modifying the returned array has no effect on the available screens.



Implementation
    public static function get screens():Array

Example  ( How to use this example )
The following example shows how to get the array containing the available screens:

var screenArray:Array = Screen.screens;
    

visibleBounds

property 
visibleBounds:Rectangle  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

The bounds of the area on this screen in which windows can be visible.

The visibleBounds of a screen excludes the task bar (and other docked desk bars) on Windows, and excludes the menu bar and, depending on system settings, the dock on Mac OS X. On some Linux configurations, it is not possible to determine the visible bounds. In these cases, the visibleBounds property returns the same value as the screenBounds property.



Implementation
    public function get visibleBounds():Rectangle

Example  ( How to use this example )
The following example shows how to get the usable bounds of a screen (in this case, the primary display screen):
import flash.display.Screen;
import flash.geom.Rectangle;

var mainScreen:Screen = Screen.mainScreen;
var screenBounds:Rectangle = mainScreen.visibleBounds;
Method Detail

    getScreensForRectangle

()method
public static function getScreensForRectangle(rect:Rectangle):Array

Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0

Returns the (possibly empty) set of screens that intersect the provided rectangle.

Parameters

rect:Rectangle — A rectangle with coordinates relative to the origin of the virtual desktop, which is the top-left corner of the primary screen.

Returns
Array — An array of Screen objects containing the screens that contain any part of the area defined by the rect parameter.

Example  ( How to use this example )

The following example shows how to get the array of screens containing at least part of a given rectangle:
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

The following example defines a DockingWindow class to create a window that docks to the sides of the screen. This task is accomplished by performing the following steps:
  1. Responding to keyboard events to determine the side of the screen on which to dock.
  2. Accessing the static Screen class method getScreensForRectangle() to get the Screen object for the screen upon which the window is currently displayed.
  3. Resetting the window bounds based on the screen dimensions.
  4. Redrawing the window content based on the new window dimensions.

Note, this class is intended to be used as the root class of an AIR application with the settings SystemChrome="none" and transparent="true". To use this class in a window with system chrome, you must take the chrome thickness and the minimum width of the window into account when calculating window location and size.


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();
            }
        }
    }
}