AIR中文帮助 第十章. 窗体(Windows)和菜单
屏幕
根据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)和菜单相关推荐
- Windows窗体的所有菜单
简介仅仅使用一行简单的程序,你就能够使你的Windows窗体的所有菜单和上下文菜单具有office2003的菜单外观.同样地,你也可以只用一行程序,就能为你的菜单加上漂亮的图标.本文实现的是一个具有该 ...
- linux cp 中文文件名,linux下将中文文件名文件cp到windows目录下后文件名乱码问题的解决...
linux中,我的LC_ALL环境是zh_CN.gbk. 当我把中文文件名文件cp到windows的fat32盘下后,重起进入windows后发现文件名全是乱码. 首先google,baidu了下,发 ...
- python画图包seaborn和matplotlib中文字体显示(针对windows系统,,使用ipython notebook)
一.seaborn的中文字体显示(针对windows系统,,使用ipython notebook) #################### 更新:2017年6月16日 这次的seaborn版本是0. ...
- 规范设计Windows应用软件菜单
在开发软件的菜单界面时,能按Windows所设定的规范进行,不仅能使所开 发出的应用软件的菜单界面更美观丰富,而且能与Windows中各软件协调一致, 使大量熟悉Windows操作的用户,一看菜单,就 ...
- Stardock Start11 Windows开始菜单增强工具,最新版
前言 Stardock Start11是一款强大的Windows开始菜单增强工具,在任务栏上添加开始按钮,为Windows 提供Win7/Win8/Win10/Win11样式开始菜单风格,自定义功能包 ...
- [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)
原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...
- [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)_vortex_新浪博客
原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...
- Windows 右键菜单扩展
右键菜单,指用户在对Windows Shell Object右键单击时,弹出的上下文菜单(Context Menu). 如上图所示的对右键菜单进行扩展,属于Windows Shell Extensio ...
- 如何将一个Python脚本加入Windows右键菜单?
一.背景 因为APP的日志都是经过加密处理了,所以每次如果要分析日志的话,得先将加密的日志文件进行解密. 而解密的脚本是用python写的,每次要解密一个文件 都需要在cmd目录下敲python目录来 ...
最新文章
- 【 C 】字符分类函数
- Android之linux基础教学之六 异常
- 一个小灯泡引发大论战:千万粉丝科普up主翻车,伊朗“唐马儒”、李永乐等下场,30万公里导线引百万网友围观...
- Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)
- 新开两场构建服务治理框架的直播分享
- AspNet Identity 和 Owin 谁是谁
- 高德地图跟百度地图经纬度互转
- bat自动输入密码登录_【第7期】Teamcenter自动登录改进,对portal.bat中登录密码加密...
- C#使用带参数的存储过程
- Java写的一个二叉树三种遍历递归算法(仅用作理解三种遍历)
- JAVA apidoc 官方文档下载地址
- JavaScript 3D实时线图
- Origin绘制带标签热图
- tornado tcpclient 应用实例
- robots文件简介
- 验证Kubernetes YAML的最佳实践和策略
- IComponent2 Interface 学习
- 援引Yaphets的话:我又不淡定了
- javascript 0基础入门
- mysql数据库生成pd_使用pd从数据库逆向生成pdm文件
热门文章
- 台式机Windows 10系统打开或者断开网络的方法
- cortex-m0 专为支持OS的四个功能设计
- iPhone 14系列或均搭载A16芯片:但Pro型号为A16 Pro
- 三星Galaxy Tab S8系列国行版曝光:对标iPad Pro的旗舰平板
- FF:纳斯达克要求退市系误读 警示函仅与推迟提交Q3财报相关
- 在“后台反复读取用户相册”?微信回应:最新版本将取消
- Android 12发布!小米11全系、Redmi K40 Pro宣布首批支持
- 1-9月全国快递服务企业业务量累计完成561.4亿件 同比增长27.9%
- iPhone 12主板曝光:布局更紧凑 满满苹果基因
- 雷军:小米10是首款支持8x8 MU-MIMO的手机