如何在没有嵌入源bitmapdata的情况下在图形元素上应用scale 9网格

时间:2013-10-22 10:27:59

标签: actionscript-3 flex flex4

我有一个运行时生成的bitmapdata,并希望在我的flex Skin类中为它应用scaleninegrid。我做了类似这样的事情:

  <fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        [Embed(source="progressBarTrack.png")]
        private var host:Class;

        [Bindable]
        private var texture:BitmapData

        protected function skin1_preinitializeHandler(event:FlexEvent):void
        {
            //here is just an example,my bitmapdata will be retrieved by an other way.
                          texture = Bitmap(new host()).bitmapData;
        }

    ]]>
</fx:Script>
<s:Graphic scaleGridBottom="11" scaleGridLeft="14" scaleGridRight="40" scaleGridTop="10">
    <s:Rect width="300" height="22">
        <s:fill>
            <s:BitmapFill source="{texture}"/>
        </s:fill>
    </s:Rect>
</s:Graphic>

然而,无论我设置宽度和高度,它都无法工作。我也尝试嵌入源图像,它工作,但由于bitmapdata是运行时生成的,我无法像@embed那样设置scalenine。 ....,scaleGridLeft .....

反正是否允许我这样做或者我做错了什么?我想在进入源代码之前得到一些提示,并制作我自己的支持它的图形元素。

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

查看bytearray.org ScaleBitmap class。它是一个开源类,它扩展了BitmapData以在运行时呈现scale9位图。