01
2015
06

打造自己的Flex AIR标题栏

其实思路和用flash cs开发一样,先隐藏默认的边框,然后自己做一个标题栏,放到最上边。区别在于,用flash cs全是可视化的,可视化设置系统镶边,可视化编辑标题栏;flex全都是代码实现的。

以下转自:http://www.blogjava.net/TWaver/archive/2012/02/29/370994.html

有人问如何用代码禁用Flex AIR程序标题栏的最大化, 最小化按钮, 虽然app.xml文件里面可以控制是否禁用和启用最大化, 最小化按钮, 但是无法动态切换, 因为WindowedApplication.maximizable和WindowedApplication.minimizable是read only的. 下面就介绍一下如何定制自己的AIR程序标题栏, 先看下效果(是不是和原生的很像? 完全可以以假乱真了):

1. 先隐藏原生的标题栏: 编辑xxx-app.xml, 找到systemChrome行, 取消注释, 并设置值为none:

<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
    <systemChrome>none</systemChrome>


			3. 给标题添加事件, 以达到拖拽标题时, 移动窗口. 这里走了不少弯路(开始用监听鼠标移动事件, 计算鼠标的移动距离, 以修改nativeWindow的x和y坐标, 发现鼠标移动过程中, 窗口一直在抖动), 最后发现WindowedApplication的nativeWindow有startMove方法, 只要在mouse down事件里面调用此方法, 就可以达到移动窗口的目的:
<pre as3;"="" style="margin-top: 0px; margin-bottom: 0px; margin-left: 22px; font-size: 1em;">
this.addEventListener(Event.ADDED_TO_STAGE, function(e:*):void {
    _titlebar.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void {
        nativeWindow.startMove();
    });
});


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。