Flex用BitmapData实现文本旋转

    Flex的DisplayObject类 有一个rotation属性,通过它可以现实可视化组件的旋转,使用起来应该非常方便,所以一开始想到了用rotation现实文本的旋转。没想到用rotation一旋转(比如转个90度),文本就不见了;我把旋转角度改小一点(改为1度),文本总算又出来了,不过用scaleX一放大,它又不见了。

    请教高手,说是字体的问题,要嵌入字体。不过汉字太多了,嵌入字体的.ttf文件体积可观,有点得不偿失。听人说可以动态XXX,好像是local……,不过我弄了半天也没弄出来。哎,郁闷!

    还是用BitmapData吧,虽然放大后有点难看,不过不用嵌入字体,可以为程序减肥。代码如下:

  

注意事项:

1、 要判断textfield的宽和高是否超过2880 像素,因为BitmapData 对象的最大宽度和高度为 2880 像素,如果指定的宽度值或高度值大于 2880,则不会创建新实例,而且会遇到各种意想不到的问题,为了这个问题,我折腾了半天。

   var bw:Number = textfield.width;
   var bh:Number = textfield.height; 
   if(textfield.width>2880 )
   {
    textfield.scaleX *= 2880/textfield.width;
    bw = 2880;     
   }      
   if(textfield.height>2880)
   {     
    textfield.scaleY *= 2880/textfield.height;
    bh = 2880;
   }
   
    var myBitmapData:BitmapData = new BitmapData(bw, bh, true,0);

 

2、不要企图直接给textfield.width或textfield.height赋值,下面的代码是没有意义的:

   if(textfield.width>2880)

   {
    textfield.width = 2880;    
   }      
   if(textfield.height>2880)
   {
    textfield.height = 2880;  
   }

因为加了textfield.autoSize = TextFieldAutoSize.LEFT后,textfield.width、textfield.height的值就固定了,给它们赋值也不会改变;即使textfield.scaleX或textfield.scaleY改变,textfield.width、textfield.height的值也不会改变,我这里用textfield.scaleX *= 2880/textfield.width;只是为了调整文本的大小,以免文本转化为BitMap后发生截断。

3、文本放大后会很难看,画的时候可以先放大X倍,再缩小X倍,这样放大后就好看些了。不过不要放得太大,否则超会过2880,而且放得太大再缩小,字也不好看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值