ここでDegrafa初心者:-)。
「com.degrafa.skins.CSSSkin」を取得して、線形グラデーションの背景を作成することができました。今、私は放射状のグラデーションを理解しようとしているので、より高度なものに取り組んでいます...
Flex-skinning-with-degrafa-screencastを見てこれを理解しましたが、コードが機能せず、キャンバスに白い背景が表示されます。
これが私がこれまでに持っているコードです:
Canvasを拡張し、ThreeWayGradientのstyleNameを持つMXMLコンポーネントThreeWayGrad.mxmlがあります。
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
styleName="ThreeWayGradient"/>
クラスRadialGradientのスキンタグを持つThreeWayGradientのCSSスタイルエントリがあります。
Canvas.ThreeWayGradient
{
borderSkin: ClassReference("assets.skins.RadialGradient");
}
そして最後に、RadialGradient.mxmlコンポーネントがあります。
<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns="http://www.degrafa.com/2007">
<mx:Script>
<![CDATA[
[Bindable] private var _height:Number = 0;
[Bindable] private var _width:Number = 0;
override protected
function updateDisplayList(w:Number, h:Number):void
{
super.updateDisplayList(w, h);
_height = h;
_width = w;
trace("INFO: displaylist updated --" + _height + " : " + _width );
}
]]>
</mx:Script>
<strokes>
<SolidStroke id="mainStroke" color="#333333" weight="3"/>
</strokes>
<fills>
<RadialGradientFill
id="blueGradient"
angle="45"
focalPointRatio="0">
<GradientStop
alpha="1"
ratio=".25"
color="#ffffff"/>
<GradientStop
alpha="1"
ratio=".70"
color="#003355"/>
<GradientStop
alpha="1"
ratio="1"
color="#111111"/>
</RadialGradientFill>
</fills>
<!-- Creating the background -->
<geometry>
<GeometryComposition>
<!-- Creating a Rectangle to draw the gradient to and
moving the center of the gradient to the lower left corner -->
<RegularRectangle
fill="{blueGradient}"
stroke="{mainStroke}"
height="{_height}"
width="{_width}"
/>
</GeometryComposition>
</geometry>
</GraphicBorderSkin>
なぜこれが機能しないのか誰かが知っていますか?正しいサイズのトレース出力が表示されるので、クラスが呼び出されていることがわかります。
また、GraphicBorderSkin要素の代わりにSurfaceを使用し、GeometryCompositionの代わりにGeometryGroupを使用して、このコードを新しいアプリケーションにコピーしました。これで機能します。とにかく、私は何か簡単なものが欠けていると確信しています、そして事前に感謝します!!!