在as3里,我做了一个这样的尝试
输出
简单分析一下:这里一开始的方形宽200,输出200,很正常,但是旋转90后(测试可以看到旋转过来了),但是width输出却是50,正好是原方形的 height。然后再调整一下宽度(s.width = 10),输出50(在图形上看旋转后的宽度确实变化了)。这些似乎不大合理。
我的猜想是:
根据flex 2 language reference
宽度的读和写分别是由set/get来执行的,set(写)的时候修改了元件的逻辑宽度(不被rotation,scale影响的),而get(读)的时 候却是取得了实际的宽度,是被rotation,scale等因素影响的,比如一个方形旋转后,水平宽度可能宽了,这就是实际看到的水平宽度。
js 代码
- var s:Sprite = new Sprite();
- s.x = 100;
- s.y = 100;
- var gra:Graphics = s.graphics;
- gra.beginFill(0x000000,1);
- gra.drawRect(0,0,200,50);
- gra.endFill();
- this.addChild(s);
- trace(s.width);
- s.rotation = 90;
- trace(s.width);
- s.width = 10;
- trace(s.width);
- trace(s.scaleX);
- s.scaleX = 5;
- trace(s.scaleX);
- trace(s.width);
- trace(s.rotation);
js 代码
- 200
- 50
- 50
- 0.2
- 5
- 50
- 90
我的猜想是:
根据flex 2 language reference
js 代码
- Implementation
- public function get width():Number
- public function set width(value:Number):void