屏幕

根据AIR screen API可以获得系统桌面显示屏幕的信息。

屏幕简介

screen API包含一个简单类,Screen,获得系统屏幕信息和屏幕的详细描述。

计算机系统可能有多个监视器或显示设备,这样对应的多个桌面屏幕排列在虚拟空间上。AIR Screen类提供了关于屏幕信息,如果有多个监视器映射到同一个屏幕上,那只有一个屏幕可显示,如果屏幕的尺寸大于监视器显示范围,没有办法确定是哪一部分处于可视状态。

一个屏幕表示一个独立的桌面显示区域,被描述为虚拟桌面的一个矩形区域,屏幕左上角为初始坐标,单位为像素。

screen_bounds.png ( 36.98KB ) 下载次数: 9

上面的屏幕排列中,虚拟桌面上有两个屏幕,主屏幕(#1)的左上角坐标总是(0,0),如果屏幕排列设置屏幕#2作为主屏幕,则屏幕#1的坐标将为负坐标,一般指屏幕的可使用边界不包括菜单栏,任务栏。

枚举屏幕

通过下列屏幕方法和属性枚举虚拟桌面上的屏幕:

Screen.screens

数组对象,表示可用的屏幕,注意数组的元素顺序不是有效的。

Screen.mainScreen

表示代表主屏幕的屏幕对象,在Mac OS X系统中,主屏幕为显示菜单栏的所在屏幕,在Windows中为系统指定的主屏幕。

Screen.getScreensForRectangle()

通过指定的区域获得屏幕对象数组,该矩形区域作为参数传递给该方法,如果没有屏幕在范围内则返回空数组。

示例:在屏幕中移动窗体

这个例子使用screen API通过方向键在多个屏幕中移动窗体。

代码
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.bounds.left < stage.nativeWindow.bounds.left)...{

stage.nativeWindow.x +=

left.bounds.left - currentScreen.bounds.left;

stage.nativeWindow.y += left.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.bounds.left > stage.nativeWindow.bounds.left)...{

stage.nativeWindow.x +=

left.bounds.left - currentScreen.bounds.left;

stage.nativeWindow.y += left.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.bounds.top < stage.nativeWindow.bounds.top)...{

stage.nativeWindow.x += top.bounds.left - currentScreen.bounds.left;

stage.nativeWindow.y += top.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.bounds.top > stage.nativeWindow.bounds.top)...{

stage.nativeWindow.x += top.bounds.left - currentScreen.bounds.left;

stage.nativeWindow.y += top.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;

}

}

}

AIR中文帮助 第十章. 窗体(Windows)和菜单相关推荐

  1. Windows窗体的所有菜单

    简介仅仅使用一行简单的程序,你就能够使你的Windows窗体的所有菜单和上下文菜单具有office2003的菜单外观.同样地,你也可以只用一行程序,就能为你的菜单加上漂亮的图标.本文实现的是一个具有该 ...

  2. linux cp 中文文件名,linux下将中文文件名文件cp到windows目录下后文件名乱码问题的解决...

    linux中,我的LC_ALL环境是zh_CN.gbk. 当我把中文文件名文件cp到windows的fat32盘下后,重起进入windows后发现文件名全是乱码. 首先google,baidu了下,发 ...

  3. python画图包seaborn和matplotlib中文字体显示(针对windows系统,,使用ipython notebook)

    一.seaborn的中文字体显示(针对windows系统,,使用ipython notebook) #################### 更新:2017年6月16日 这次的seaborn版本是0. ...

  4. 规范设计Windows应用软件菜单

    在开发软件的菜单界面时,能按Windows所设定的规范进行,不仅能使所开 发出的应用软件的菜单界面更美观丰富,而且能与Windows中各软件协调一致, 使大量熟悉Windows操作的用户,一看菜单,就 ...

  5. Stardock Start11 Windows开始菜单增强工具,最新版

    前言 Stardock Start11是一款强大的Windows开始菜单增强工具,在任务栏上添加开始按钮,为Windows 提供Win7/Win8/Win10/Win11样式开始菜单风格,自定义功能包 ...

  6. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)

    原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...

  7. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)_vortex_新浪博客

    原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...

  8. Windows 右键菜单扩展

    右键菜单,指用户在对Windows Shell Object右键单击时,弹出的上下文菜单(Context Menu). 如上图所示的对右键菜单进行扩展,属于Windows Shell Extensio ...

  9. 如何将一个Python脚本加入Windows右键菜单?

    一.背景 因为APP的日志都是经过加密处理了,所以每次如果要分析日志的话,得先将加密的日志文件进行解密. 而解密的脚本是用python写的,每次要解密一个文件 都需要在cmd目录下敲python目录来 ...

最新文章

  1. 【 C 】字符分类函数
  2. Android之linux基础教学之六 异常
  3. 一个小灯泡引发大论战:千万粉丝科普up主翻车,伊朗“唐马儒”、李永乐等下场,30万公里导线引百万网友围观...
  4. Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)
  5. 新开两场构建服务治理框架的直播分享
  6. AspNet Identity 和 Owin 谁是谁
  7. 高德地图跟百度地图经纬度互转
  8. bat自动输入密码登录_【第7期】Teamcenter自动登录改进,对portal.bat中登录密码加密...
  9. C#使用带参数的存储过程
  10. Java写的一个二叉树三种遍历递归算法(仅用作理解三种遍历)
  11. JAVA apidoc 官方文档下载地址
  12. JavaScript 3D实时线图
  13. Origin绘制带标签热图
  14. tornado tcpclient 应用实例
  15. robots文件简介
  16. 验证Kubernetes YAML的最佳实践和策略
  17. IComponent2 Interface 学习
  18. 援引Yaphets的话:我又不淡定了
  19. javascript 0基础入门
  20. mysql数据库生成pd_使用pd从数据库逆向生成pdm文件

热门文章

  1. 台式机Windows 10系统打开或者断开网络的方法
  2. cortex-m0 专为支持OS的四个功能设计
  3. iPhone 14系列或均搭载A16芯片:但Pro型号为A16 Pro
  4. 三星Galaxy Tab S8系列国行版曝光:对标iPad Pro的旗舰平板
  5. FF:纳斯达克要求退市系误读 警示函仅与推迟提交Q3财报相关
  6. 在“后台反复读取用户相册”?微信回应:最新版本将取消
  7. Android 12发布!小米11全系、Redmi K40 Pro宣布首批支持
  8. 1-9月全国快递服务企业业务量累计完成561.4亿件 同比增长27.9%
  9. iPhone 12主板曝光:布局更紧凑 满满苹果基因
  10. 雷军:小米10是首款支持8x8 MU-MIMO的手机