AS3.0之BitmapData妙用

本文介绍了如何利用Flash中的BitmapData结合显示对象的scrollRect属性实现对象的即时尺寸调整与更新显示,解决了在不等待屏幕刷新的情况下获取准确属性值的问题。
先上代码,然后解释。

var bmpData:BitmapData = new BitmapData(1, 1);
bmpData.draw(mc);

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

//假设mc原宽度500高度400
mc.scrollRect = new Rectangle(0,0,30,40);
trace(mc.width,mc.height);
//输出500,400

可是显示出来却是:30x40的大小...
这是为什么呢...
[color=red][align=center]原来,flash显示对象的很多属性都是在它被更新显示之后才会体现出来的。[/align][/color]
与此类似的还有(仅举一例):
TextField的getCharBoundaries(charIndex:int):Rectangle
如果你在用text属性或appendText方法改变了内容后
直接调用getCharBoundaries...得到的将是一个错误的数据...
有些时候,不想等它在屏幕上显示出来,就想获得这些数据,那就只能强迫它更新了
用的就是最上面的代码...
(没说更新到BitmapData就不是更新...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值