Exibição de telas no AIRAdobe AIR 1.0 e posterior Use a classe Screen do Adobe® AIR® para acessar informações sobre as telas de exibição anexadas a um computador ou dispositivo. Princípios básicos das telas de exibição no AIRA API de tela contém uma classe única, Screen, que oferece membros estáticos para obter informações de tela do sistema e membros de ocorrência para descrever uma tela específica. Um sistema de computador pode ter vários monitores ou exibições anexadas, que podem corresponder a diversas telas da área de trabalho organizadas em um espaço virtual. A classe Screen do AIR fornece informações sobre as telas, sua organização relativa e seu espaço utilizável. Se mais de um monitor for mapeado para a mesma tela, haverá somente uma tela. Se o tamanho da tela é maior que a área de exibição do monitor, não há como determinar que parte da tela está visível atualmente A tela representa uma área de exibição independente da área de trabalho. As telas são descritas como retângulos na área de trabalho virtual. O canto superior esquerdo da tela designado como exibição principal é a origem do sistema de coordenadas da área de trabalho virtual. Todos os valores usados para descrever a tela são fornecidos em pixels. Visualizar gráfico inteiro ![]() Nessa organização de telas, há duas telas na área de trabalho virtual. As coordenadas do canto superior esquerdo da tela principal (nº 1) são sempre (0,0). Se a organização da tela for alterada para designar a tela nº 2 como tela principal, as coordenadas da tela nº 1 se tornarão negativas. Barras de menu, barras de tarefa e encaixes são excluídos ao reportar limites utilizáveis de uma tela. Para obter informações mais detalhadas sobre a função da classe API, métodos, propriedades e eventos, consulte a Referência do ActionScript 3.0 para a plataforma Adobe Flash. Enumeração das telasVocê pode enumerar as telas da área de trabalho virtual com os seguintes métodos e propriedades de tela:
Não salve os valores retornados pelos métodos e propriedades da classe Screen. O usuário ou sistema operacional pode alterar as telas disponíveis e a respectiva disposição a qualquer momento. O exemplo a seguir usa a API da tela para mover uma janela entre várias telas em resposta ao pressionamento das teclas de seta. Para mover a janela para a próxima tela, o exemplo obtém a matriz screens e a classifica verticalmente ou horizontalmente (dependendo da tecla de seta pressionada). Em seguida, o código passa pela matriz classificada, comparando cada tela com as coordenadas da tela atual. Para identificar a tela atual da janela, o exemplo chama Screen.getScreensForRectangle(), passando nos limites da janela. package {
import flash.display.Sprite;
import flash.display.Screen;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
public class ScreenExample extends Sprite
{
public function ScreenExample()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey);
}
private function onKey(event:KeyboardEvent):void{
if(Screen.screens.length > 1){
switch(event.keyCode){
case Keyboard.LEFT :
moveLeft();
break;
case Keyboard.RIGHT :
moveRight();
break;
case Keyboard.UP :
moveUp();
break;
case Keyboard.DOWN :
moveDown();
break;
}
}
}
private function moveLeft():void{
var currentScreen = getCurrentScreen();
var left:Array = Screen.screens;
left.sort(sortHorizontal);
for(var i:int = 0; i < left.length - 1; i++){
if(left[i].bounds.left < stage.nativeWindow.bounds.left){
stage.nativeWindow.x +=
left[i].bounds.left - currentScreen.bounds.left;
stage.nativeWindow.y += left[i].bounds.top - currentScreen.bounds.top;
}
}
}
private function moveRight():void{
var currentScreen:Screen = getCurrentScreen();
var left:Array = Screen.screens;
left.sort(sortHorizontal);
for(var i:int = left.length - 1; i > 0; i--){
if(left[i].bounds.left > stage.nativeWindow.bounds.left){
stage.nativeWindow.x +=
left[i].bounds.left - currentScreen.bounds.left;
stage.nativeWindow.y += left[i].bounds.top - currentScreen.bounds.top;
}
}
}
private function moveUp():void{
var currentScreen:Screen = getCurrentScreen();
var top:Array = Screen.screens;
top.sort(sortVertical);
for(var i:int = 0; i < top.length - 1; i++){
if(top[i].bounds.top < stage.nativeWindow.bounds.top){
stage.nativeWindow.x += top[i].bounds.left - currentScreen.bounds.left;
stage.nativeWindow.y += top[i].bounds.top - currentScreen.bounds.top;
break;
}
}
}
private function moveDown():void{
var currentScreen:Screen = getCurrentScreen();
var top:Array = Screen.screens;
top.sort(sortVertical);
for(var i:int = top.length - 1; i > 0; i--){
if(top[i].bounds.top > stage.nativeWindow.bounds.top){
stage.nativeWindow.x += top[i].bounds.left - currentScreen.bounds.left;
stage.nativeWindow.y += top[i].bounds.top - currentScreen.bounds.top;
break;
}
}
}
private function sortHorizontal(a:Screen,b:Screen):int{
if (a.bounds.left > b.bounds.left){
return 1;
} else if (a.bounds.left < b.bounds.left){
return -1;
} else {return 0;}
}
private function sortVertical(a:Screen,b:Screen):int{
if (a.bounds.top > b.bounds.top){
return 1;
} else if (a.bounds.top < b.bounds.top){
return -1;
} else {return 0;}
}
private function getCurrentScreen():Screen{
var current:Screen;
var screens:Array = Screen.getScreensForRectangle(stage.nativeWindow.bounds);
(screens.length > 0) ? current = screens[0] : current = Screen.mainScreen;
return current;
}
}
}
|
|