About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Sep

    27

    WIN 10 桌面 Adobe AIR 程序变慢

    • 0 Comments
    • Miscellaneous

    Win 10 企业版自带了MSE(估计其它版本也自带了),默认在后台就运行,系统任务栏前端无任何提示。如果 Adobe AIR 项目访问了数据库相关的文件,它在系统启动后的第一次启动非常缓慢,有时候要等一两分钟左右,然后后续的启动速度才能变正常,建议将它关闭。关闭后不管是第一次启动还是第 N 次启动,速度就变正常了。

    Win 10 关闭 Windows Defender 方法链接:http://jingyan.baidu.com/article/b87fe19e870be4521835682d.html

    Oct

    7

    1、baidu-ane-for-ios-and-android

    链接:https://github.com/lilili87222/baidu-ane-for-ios-and-android

    官网:http://union.baidu.com/

    备注:如果 APP 的用户主要针对国内,首选了吧。

    2、admob-for-flash

    链接:https://github.com/lilili87222/admob-for-flash

    官网:http://www.google.cn/ads/admob/

    备注:这个官网其实就是中文官网(但服务器肯定不在国内的,所以访问速度很慢),如果 APP 的用户主要针对的是国外用户的话,那加入吧。

    3、as3-air-ad-network-framework

    链接:https://github.com/lilili87222/as3-air-ad-network-framework

    备注:这是针对主流广告平台 ANE 的管理类,类似于广告聚合平台的功能,但它不需要像聚合平台那样需要通过服务器来配置每个广告平台的配置比率与轮播速度等等,而是直接在 APP 中本地化管理每个广告平台的配置比率与轮播速度等。

    4、其它

    如果想要动态的配置每个广告平台的投放比率,尝试不同广告平台的收益情况、云测试等等,可以尝试广告聚合平台(聚合平台的缺点是官方提供的 ANE 往往比较大,而且还大的不一般 - -)。

    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) 
                {
                }
            }

    Jan

    17

    实测在苹果公司的 iOS 系统的 iPhone 、iPad 、iPod 等移动设备的中,在对相同的 touchPointID 的多个事件对象进行处理时,当手指轻触屏幕单击的时候 touchBegin,touchEnd 是非常精确的,并不会有任何 touchMove 事件产生。

    在安卓设备生产商太过鱼龙混杂了,会发现很多品牌的手机设备触屏精度并不准确:手指单击屏幕时,往往会产生 touchMove 事件,导致 touchEnd 事件和 touchBegin 事件的 stageX 与 stageY 属性值总是会相差那么一点,好一些的是 0.5 - 3;差一些的低端安卓机在3-7(既便是大生产商也存在这个问题,比如三星、索尼、联想等生产的中低端机,其它小生产厂商更是严重)

    如果需要开发一个精度相当高的应用,那么就不得不使用一些技巧。比如通过一个临时的 Point 变量来保存 touchBegin 的 stageX 与 stageY 的值。然后将 touchEnd 与 touchBegin 事件对象的 stageX 与 stageY 进行比较(可以使用一个精度阈值约为10)后再处理具体的业务逻辑,但这有可能让开发者多写上十几行、甚至几十行代码进行蛋疼的调试和优化。

    精度不准确时不仅会影响到基于精度的 APP 开发,而且还会产生其它问题。比如还会影响到基于速率的 APP开发,一个瞬间的抖动会产生一个较大的瞬间加速度值,甚至是一个逆向的加速度值。所以搞安卓应用和游戏开发者们如果涉及到屏幕精度的开发,那么就不得不极其小心的进行多种设备的测试。

    不得不为 Apple 公司垄断性的生产硬件赞一个。如果每一家公司的硬件都像苹果公司那么优秀,那么开发者会省很多事。苹果的 APP 总是设计的那么高效和优秀,这不仅仅是严格的审核机制和 iOS 系统带来的,跟它的硬件设备也有着非常大的关系。

    Jan

    9

    不同的移动操作系统会施加不同的文件系统限制,而且这些限制通常与由桌面操作系统施加的限制有所不同。因此,平台不同,用于保存文件和数据的适当位置也可能各不相同。文件系统之间存在差异所产生的一个结果是,AIR File 类所提供的常用目录的快捷方式不一定总是可用。下表列出了可在 Android 和 iOS 上使用的权限列表:
      Android iOS
    File.applicationDirectory 通过 URL 只读(非本机路径) 只读
    File.applicationStorageDirectory 可用 可用
    File.cacheDirectory 可用 可用
    File.desktopDirectory SDCard 的根目录 不可用
    File.documentsDirectory SDCard 的根目录 可用
    File.userDirectory SDCard 的根目录 不可用
    File.createTempDirectory() 可用 可用
    File.createTempFile() 可用 可用

    iOS 远程云存储(备份与缓存)相关资料点击这里查看。

    Dec

    20