我在博客上有一篇關於如何製作這個確切組件Here的文章。
您創建一個基本的自定義MXML組件(在這種情況下擴展VBox)。您可以指定一個編程皮膚,這是斜角和漸變被應用的位置。
編程皮膚完成了它在updateDisplayList函數中的繪製。
下面是一些代碼(其餘是我的博客上,有一個演示)
var g:Graphics = graphics;
var cn:Number = this.getStyle("cornerRadius");
var crtl:Number = this.getStyle("cornerRadiusTopLeft") > 0 ? this.getStyle("cornerRadiusTopLeft") : cn;
var crtr:Number = this.getStyle("cornerRadiusTopRight") > 0 ? this.getStyle("cornerRadiusTopRight") : cn;
var crbl:Number = this.getStyle("cornerRadiusBottomLeft") > 0 ? this.getStyle("cornerRadiusBottomLeft") : cn;
var crbr:Number = this.getStyle("cornerRadiusBottomRight") > 0 ? this.getStyle("cornerRadiusBottomRight") : cn;
var gradFrom:Number = this.getStyle("gradientFrom");
var gradTo:Number = this.getStyle("gradientTo");
var b:EdgeMetrics = borderMetrics;
var w:Number = unscaledWidth - b.left - b.right;
var h:Number = unscaledHeight - b.top - b.bottom;
var m:Matrix = verticalGradientMatrix(0, 0, w, h);
g.clear();
g.beginGradientFill("linear", [gradFrom, gradTo], [1, 1], [0, 255], m);
g.lineStyle(1,borderColor,1,true,LineScaleMode.NORMAL,CapsStyle.ROUND,JointStyle.ROUND);
GraphicsUtil.drawRoundRectComplex(g, b.left, b.top, w, h, crtl, crtr, crbl, crbr);
g.endFill();
}
的演示,看看Here。希望這可以幫助。
非常感謝您! :)我從來沒有使用GraphicsUtil,似乎是什麼伎倆。 – camurgo 2009-10-05 18:45:54
您不需要GraphicsUtil類。 「drawRoundRectComplex」是圖形對象的一個不良記錄功能。 http://livedocs.adobe.com/flex/3/html/help.html?content=Drawing_Vector_Graphics_5.html – Glenn 2009-10-05 19:41:10
好點 - 有時Adobe會提供太多的做事方法。這是我的一箇舊項目的一些代碼 - 我發誓我現在會更好了! - Casp – 2009-10-05 20:22:43