Flex2:无边框透明背景MenuBar实现

摘要:
在Flex2中,大家是否发现MenuBar的背景与边框是不能去掉的,其实这是因为MenuBar的缺省的backgroundSkin属性使用的是mx.skins.halo.MenuBarBackgroundSkin,不管您怎么设置,该skin都会绘制背景以及边框,所以我们不能去掉MenuBar的边框。既然这样的话,要去掉边框,只需要不使用该Skin就可以,所以我们自定义了一个Skin:MenuBar

在Flex2中,大家是否发现MenuBar的背景与边框是不能去掉的,其实这是因为MenuBar的缺省的backgroundSkin属性使用的是mx.skins.halo.MenuBarBackgroundSkin,不管您怎么设置,该skin都会绘制背景以及边框,所以我们不能去掉MenuBar的边框。

既然这样的话,要去掉边框,只需要不使用该Skin就可以,所以我们自定义了一个Skin:MenuBarNoBorderFillSkin,该Skin什么都不做,只是用来替代MenuBarBackgroundSkin而已。

MenuBarNoBorderFillSkin.as:

packagecom.eshangrao.skin{
importmx.skins.ProgrammaticSkin;
importflash.display.Graphics;
publicclassMenuBarNoBorderFillSkinextendsProgrammaticSkin{
publicfunctionMenuBarNoBorderFillSkin(){
super();
}
}
}
另外,使用了MenuBarNoBorderFillSkin以后,MenuBar的菜单栏不再根据鼠标移动显示不同的选择状态了,所以我们又做了个MenuBarActiveSkin类来响应鼠标,然后将MenuBar的itemDownSkin和itemOverSkin属性MenuBarActiveSkin,这样菜单栏就可以显示不同的状态。

MenuBarActiveSkin.as:

packagecom.eshangrao.skin{
importmx.skins.ProgrammaticSkin;
importflash.display.Graphics;
importmx.utils.ColorUtil;
publicclassMenuBarActiveSkinextendsProgrammaticSkin{
publicfunctionMenuBarActiveSkin(){
super();
}
overrideprotectedfunctionupdateDisplayList(w:Number,h:Number):void{
varbackgroundAlpha:Number=getStyle("backgroundAlpha");
varrollOverColor:uint=getStyle("rollOverColor");
graphics.clear();
drawRoundRect(0,0,w,h,5,rollOverColor,backgroundAlpha);
}
}
}

测试代码如下:

<mx:MenuBarlabelField="@label"dataProvider="{menubarXML.menuitem}"width="100%"backgroundSkin="com.eshangrao.skin.MenuBarNoBorderFillSkin"itemDownSkin="com.eshangrao.skin.MenuBarActiveSkin"itemOverSkin="com.eshangrao.skin.MenuBarActiveSkin"/>


查看示例
| 查看完整源代码

免责声明:文章转载自《Flex2:无边框透明背景MenuBar实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用SpringSession和Redis解决分布式Session共享问题mysql 根据where条件,分组,联表等统计数据条数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

GridView点击一行 取数据

1.后台添加点击事件protected void gvadm_RowDataBound(object sender, GridViewRowEventArgs e)         {             this.lblCurrentPage.Text = string.Format("当前第{0}页/总共{1}页", this.gvm.PageIn...

table边框设置

一、表格的常用属性基本属性有:width(宽度)、height(高度)、border(边框值)、cellspacing(表格的内宽,即表格与tr之间的间隔)、 cellpadding(表格内元素的间隔,即tr与tr之间的间隔)、bordercolorlight(表格的亮边框颜色)、 bordercolordark(表格的暗边框颜色)、bgcolor(表格的...

自定义android控件EditText 自定义边框 背景

自定义EditText边框背景: 首先重新定义一个style。在values文件夹下新建一个xml文件: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="my_edittext_style" parent="@android:style/Widg...

CSS3 border-image详解、应用

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持border-image。所以,就本文而言,IE浏览器可以回家休息了,Firefox3及其以下以及Opera浏览器也可以休息去看...

QT中QToolTip样式设置的两种方式

方式一 使用样式表设置ui.label->setStyleSheet("QToolTip{border:1px solid rgb(118, 118, 118); background-color: #ffffff; color:#484848; font-size:12px;}"); //设置边框, 边框色, 背景色, 字体色, 字号 ui.lab...

java poi 设置边框

//获取工作簿 HSSFWorkbook hwb = new HSSFWorkbook(); //获取sheet HSSFSheet sheet = hwb.createSheet(); //获取样式对象 HSSFCellStyle cellStyle = hwb.createCellStyle(); //设置样式对象,这里仅设置了边框属性 cellSty...