Flex 3 cookbook翻译: 2.13 为弹出窗口创建自定义边框

 

2.13 为弹出窗口创建自定义边框

2.13.1 问题

你想为弹出窗口定义边框,让它显示一个标记,来指出是哪个控件触发了这个窗口。

2.13.2 解答

创建 PanelSkin 的子类并覆盖 updateDisplayList 方法,画出标记箭头。并把这个新的 skin 作为弹出窗口的 borderSkin.

2.13.3 讨论

 

以下是基于 2.12 节的。要修改 CustomPopUp 组件。要自定义窗口边框,就要设置 CustomPopUpdborderSkin 样式为一个名为 CustomPanelSkin 的自定义类。

 

<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    width="300" height="50"
    styleName="customPopUp"
    showCloseButton="true"
    close="handleClose(event)"
    borderSkin="CustomPanelSkin"
    initialize="initPopUp()">

    <mx:Style>
        .customPopUp {
            header-height:2;
            padding-left:5;
            padding-right:5;
            padding-top:5;
            padding-bottom:5;
            border-color:#000000;
            border-alpha:.5;
            border-thickness-left:5;
            border-thickness-right:5;
            border-thickness-bottom:5;
            border-thickness-top:5;
            background-color:#666666;
            color:#ffffff;
        }
    </mx:Style>

    <mx:Text width="100%" height="100%" text="{message}"/>

    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            import mx.events.CloseEvent;
            [Bindable]
            public var message:String;

            private function handleClose(evt:CloseEvent):void {
                PopUpManager.removePopUp(this);
            }

            private function initPopUp():void {
                this.isPopUp = false;
            }
        ]]>
    </mx:Script>
</mx:TitleWindow>

 

 

CustomPanelSkin 类的代码如下。注意设置 TitleWindowisPopUp 属性为 false ,以避免用户能拖动弹出框。

 

 

package
{
    import flash.display.Graphics;

    import mx.skins.halo.PanelSkin;

    public class CustomPanelSkin extends PanelSkin
    {
        override protected function updateDisplayList(w:Number, h:Number):void {
            super.updateDisplayList(w,h);

            var gfx:Graphics = this.graphics;
            gfx.beginFill(this.getStyle("borderColor"),
                            this.getStyle("borderAlpha"));
            gfx.moveTo(this.getStyle("cornerRadius"),0);
            gfx.lineTo(15,-10);
            gfx.lineTo(25,0);
        }
    }
}

 

 

这个简单的类扩展了 PanelSkin 类, PanelSkin 类是 TitleWindow 边框的默认皮肤。在被覆盖的 updateDisplayList 方法里,添加了在 CustomPopUp 控件左上角画一个标记箭头的代码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值