私は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
スケーリングの更新された回答を参照してください。 –