令人迷糊的width,rotation,scaleX

在as3里,我做了一个这样的尝试
js 代码
 
  1. var s:Sprite = new Sprite();  
  2. s.x = 100;  
  3. s.y = 100;  
  4. var gra:Graphics = s.graphics;  
  5. gra.beginFill(0x000000,1);  
  6. gra.drawRect(0,0,200,50);  
  7. gra.endFill();  
  8. this.addChild(s);  
  9.   
  10. trace(s.width);  
  11. s.rotation = 90;  
  12. trace(s.width);  
  13. s.width = 10;  
  14. trace(s.width);  
  15.   
  16. trace(s.scaleX);  
  17. s.scaleX = 5;  
  18. trace(s.scaleX);  
  19. trace(s.width);  
  20. trace(s.rotation);  
输出
js 代码
  1. 200  
  2. 50  
  3. 50  
  4. 0.2  
  5. 5  
  6. 50  
  7. 90  
简单分析一下:这里一开始的方形宽200,输出200,很正常,但是旋转90后(测试可以看到旋转过来了),但是width输出却是50,正好是原方形的 height。然后再调整一下宽度(s.width = 10),输出50(在图形上看旋转后的宽度确实变化了)。这些似乎不大合理。

我的猜想是:
根据flex 2 language reference
js 代码
 
  1. Implementation  
  2.     public function get width():Number  
  3.     public function set width(value:Number):void  
宽度的读和写分别是由set/get来执行的,set(写)的时候修改了元件的逻辑宽度(不被rotation,scale影响的),而get(读)的时 候却是取得了实际的宽度,是被rotation,scale等因素影响的,比如一个方形旋转后,水平宽度可能宽了,这就是实际看到的水平宽度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值