2.13.自定义弹出式窗口边框

2.13.1. 问题
我想要自定义弹出窗口的边框来显示窗口。
2.13.2. 解决办法
创建一个PanleSkin 类的子类,覆盖updateDisplayList 方法来绘画调出箭头。设定这个子类为弹出窗口的borderSkin 风格。
2.13.3. 讨论
这个技术是基于Section 2.12CustomPopUp 组件修改的。定制你的窗口边框,这次设一个自定义类CustomPanelSkin 到borderSkin 风格。
+展开
-XML
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
width="300height="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 类的代码。注意TitleWindow 的isPop 属性需要设为false,用来阻止用户拖动弹出窗口。
+展开
-ActionScript
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);
}
}
}


这个简单的类集成了TitleWindow 的默认边框皮肤类PanelSkin。updateDisplayList 方法被覆盖,增加了在CustomPopUp 组件左上角绘制调出箭头的逻辑。

加支付宝好友偷能量挖...


评论(0)网络
阅读(81)喜欢(0)flash/flex/fcs/AIR