AS3.0之BitmapData妙用

先上代码,然后解释。
var bmpData:BitmapData = new BitmapData(1, 1);
bmpData.draw(mc);

大家应该都知道BitmapData吧...
看起来只能创建位图数据而已。然而实际上,它还有个妙用!
不只道大家用过显示对象的属性scrollRect没有...
引用
显示对象的滚动矩形范围。显示对象被裁切为矩形定义的大小,当您更改 scrollRect 对象的 x 和 y 属性时,它会在矩形内滚动。
scrollRect Rectangle 对象的属性使用显示对象的坐标空间,并缩放到像整个显示对象一样。滚动显示对象上已裁切窗口的转角范围是显示对象的原点 (0,0) 和矩形的宽度和高度定义的点。它们不按原点居中,而是使用原点定义区域的左上角。滚动的显示对象始终以整像素为增量进行滚动。

实际上,如果你真的改变它的值,然后马上获取显示对象的大小...
//假设mc原宽度500高度400
mc.scrollRect = new Rectangle(0,0,30,40);
trace(mc.width,mc.height);
//输出500,400

可是显示出来却是:30x40的大小...
这是为什么呢...
原来,flash显示对象的很多属性都是在它被更新显示之后才会体现出来的。

与此类似的还有(仅举一例):
TextField的getCharBoundaries(charIndex:int):Rectangle
如果你在用text属性或appendText方法改变了内容后
直接调用getCharBoundaries...得到的将是一个错误的数据...
有些时候,不想等它在屏幕上显示出来,就想获得这些数据,那就只能强迫它更新了
用的就是最上面的代码...
(没说更新到BitmapData就不是更新...)

你可能感兴趣的:(bitmapdata,as3.0)