令人迷糊的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等因素影响的,比如一个方形旋转后,水平宽度可能宽了,这就是实际看到的水平宽度。

你可能感兴趣的:(Flex)