自己画Menu borderSkin样式:
package com.wxxr.menu.as3
{
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.filters.DropShadowFilter;
import flash.geom.Matrix;
import mx.skins.halo.HaloBorder;
public class MenuStyle extends HaloBorder
{
public function MenuStyle()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth,unscaledHeight);
var dropShadow:DropShadowFilter = new DropShadowFilter();
dropShadow.color=0x000000; //设置投影
dropShadow.alpha=0.25; //阴影颜色的 Alpha 透明度值。
dropShadow.blurX=0; //水平模糊量。
dropShadow.blurY=10; //重置模糊量
dropShadow.angle=90; //阴影的角度。
dropShadow.distance=4; //阴影的偏移距离,以像素为单位。
filters=[dropShadow];
var w:Number = this.width;
var h:Number = this.height;
var fillType:String = GradientType.LINEAR; //渐变类型--直线
var color:Array = [0xE2E2E2,0xFFFFFF]; //渐变颜色
var alphas:Array = [50,100]; //colors 数组中对应颜色的 alpha 值数组
var ratios:Array = [0xE2, 0xFF];
var matr:Matrix = new Matrix();
matr.createGradientBox(22,22,0,0,0);
var spreadMethod:String = SpreadMethod.PAD;
graphics.beginGradientFill(fillType,color,alphas,ratios,matr,spreadMethod);
graphics.drawRect(0,0,w,h);
graphics.endFill();
}
}
}
画Menu 中的分割线 separatorSkin:
package com.wxxr.menu.as3
{
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.geom.Matrix;
import mx.skins.ProgrammaticSkin;
public class SeparatroStyle extends ProgrammaticSkin
{
public function SeparatroStyle()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth,unscaledHeight);
var w:Number=this.width;
var h:Number=1;
var fillType:String = GradientType.LINEAR;
var color:Array = [0xE2E2E2,0xC7C7C7];
var alphas:Array = [100,100];
var ratios:Array = [0xE2, 0xC7];
var matr:Matrix = new Matrix();
matr.createGradientBox(20,20,0,0,0);
var spreadMethod:String = SpreadMethod.PAD;
graphics.beginGradientFill(fillType,color,alphas,ratios,matr,spreadMethod);
graphics.drawRect(0,0,w,h);
graphics.endFill();
}
}
}
扩展MenuBar 应用Skin:
package com.wxxr.menu.as3
{
import mx.controls.Menu;
import mx.controls.MenuBar;
public class MenuBarTest extends MenuBar
{
public function MenuBarTest()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth,unscaledHeight);
}
override public function getMenuAt(index:int) : Menu {
var menu:Menu = super.getMenuAt(index);
menu.setStyle("borderSkin",MenuStyle);
menu.setStyle("separatorSkin",SeparatroStyle);
menu.setStyle("rollOverColor",0x000000);
menu.setStyle("textRollOverColor",0xFFFFFF);
return menu;
}
}
}
测试图:

浙公网安备 33010602011771号