About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Sep

    6

    Adobe AIR for iOS7 状态栏高度获取

    • 1 Comments
    • Flash Platform

    在 iOS 7 系统中,任务栏会以透明的状态栏(系统任务栏)显示非全屏的 AIR 应用,这会导致 AIR 顶部元素与系统元素的重叠显示(而在没有做自适应处理的 APP 中甚至还会造成舞台元素的变形情况发生)。而这个状态栏会在不同的分辨率设置下有不同的高度,比如常见的高分辨下为 20 像素,而标准分辨率下为 40 像素。甚至有开发者制作了 ANE 获取这个系统的任务栏高度,然后进行自适应舞台处理,事实上并不需要任何 ANE 就可以获取在不同分辨率下这个任务栏的高度,样例代码如下:

    var screen:Screen = Screen.mainScreen;
    var sysBarH:int = screen.bounds.height-screen.visibleBounds.height;

    事实上,这个任务栏高度的获取方式不仅仅是在 iOS 中可以使用,任何其它设备,包括桌面设备都是可以获取的。尤其是像 Windows 7 中,在使用不同高度的任务栏时,这个方法会非常有用。再比如在一个 Starling 框架的移动设备开发环境中,就可以使用以下代码来自适应除去任务栏的 Starling 的舞台与视口的大小:

    private function stageResizeListenter(e:Event):void
            {
                var _w:int = this.stage.stageWidth;
                var _h:int = this.stage.stageHeight;

                var screen:Screen = Screen.mainScreen;
                var sysBarH:int = screen.bounds.height-screen.visibleBounds.height;

                this._starling.stage.stageWidth = _w;
                this._starling.stage.stageHeight = _h;

                const viewPort:Rectangle = new Rectangle();

                viewPort.width = _w;
                viewPort.height = _h - sysBarH;
                viewPort.y = sysBarH;
                try
                {
                    this._starling.viewPort = viewPort;
                }
                catch(error:Error) 
                {
                }
            }