Text在应用rotation属性后消失问题的解决方法

这个问题在Adobe Bug System已经有人提交了,原文地址:http://bugs.adobe.com/jira/browse/SDK-11241
官方的答复:只有嵌入的字体才可以旋转(Note that only embedded text can be rotated.).
英文字体无所谓,反正那么小,中文字体就惨了,动辄十几M,难道就没有其他方法了吗?答案是肯定的.
可以先把text组件生成Bitmap,然后再旋转Bitmap就可以了
源码:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalScrollPolicy="off">
    <mx:Script>
        <![CDATA[
            import mx.controls.Image;
            import mx.core.UIComponent;

              public function save2bmp():void{
                var target:Image = new Image();
                 var bd :BitmapData = getBitmapData( UIComponent( txt ) );
                target.source = new Bitmap( bd );
                canvas.addChild(target);
                canvas.setChildIndex(target, canvas.numChildren - 1);
             }                                    
            private function getBitmapData( target :UIComponent ) : BitmapData
            {
                var bd : BitmapData = new BitmapData( target.width, target.height );
                var m : Matrix = new Matrix();
                bd.draw( target, m );
                return bd;
            }
        ]]>
    </mx:Script>
    <mx:Spacer height="200"/>
<mx:Canvas id="canvas" width="200" height="100" rotation="{HS.value}"  click="canvas.setChildIndex(txt, canvas.numChildren - 1)">
    <mx:TextArea id="txt" width="100%" height="100%" mouseFocusChange="save2bmp()"/>
</mx:Canvas>
        
<mx:HSlider id="HS" minimum="0" maximum="360" />       
<!--<mx:Button label="save" click="save2bmp()"/>-->
</mx:Application>

Share

0 条评论

留下评论