我正在使用Flash Builder 4並且正在學習過程中。Flex 4 - 如何繪製形狀以用作ButtonBarButton的外觀
短期和簡單的解釋是,我想有標籤,看起來像這樣的標籤導航:
我知道我可以做到這一點使用基於圖像的皮膚,但我想通(並且可能是錯誤的)以編程方式繪製形狀在可伸縮性方面會更好。
只要我得到我期待的結果,我想我真的不在乎它是mx還是spark。我試着這樣做:
主要應用:
<mx:ButtonBar dataProvider="{vsTabNav}" firstButtonStyle="firstButtonStyle"/>
CSS文件:
.firstButtonStyle { skinClass:ClassReference("assets.skins.ButtonBarFirstButtonSkin"); }
ButtonBarFirstButtonSkin.as:
package assets.skins
{
import flash.display.Graphics;
import mx.skins.halo.ButtonBarButtonSkin;
import mx.graphics.RectangularDropShadow;
public class ButtonBarFirstButtonSkin extends ButtonBarButtonSkin
{
private var dropShadow:RectangularDropShadow;
public function ButtonBarFirstButtonSkin()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var cornerRadius:Number = getStyle("cornerRadius");
var backgroundColor:int = getStyle("backgroundColor");
var backgroundAlpha:Number = getStyle("backgroundAlpha");
graphics.clear();
cornerRadius = 10;
backgroundColor = 0xFF0000;
backgroundAlpha = 1;
// Background
drawRoundRect(0, 0, unscaledWidth, unscaledHeight, {tl:1, tr:cornerRadius, bl:1, br:1}, backgroundColor, backgroundAlpha);
// Shadow
if (!dropShadow)
dropShadow = new RectangularDropShadow();
dropShadow.distance = 8;
dropShadow.angle = 45;
dropShadow.color = 0;
dropShadow.alpha = 0.4;
dropShadow.tlRadius = 1;
dropShadow.trRadius = cornerRadius;
dropShadow.blRadius = 1;
dropShadow.brRadius = 1;
dropShadow.drawShadow(graphics, 0, 0, unscaledWidth, unscaledHeight);
}
}
}
這應該意味着第一個按鈕是紅色的,並且會有一個非常圓的右上角。相反,我只是得到默認按鈕。不知道我在那裏做錯了什麼,但如果這不是最好的解決方案,我會喜歡一些幫助。謝謝!
謝謝!這正是我所期待的。我沒有意識到:路徑。我以爲我不得不使用Actionscript繪製不規則的形狀。並特別感謝您爲我完成所有工作:-) – Travesty3
有沒有一種方法可以讓我爲此指定縮放區域,以便彎曲部分垂直延伸,但不是水平延伸? – Travesty3
查看縮放的更新答案。 –