As3显示对象scrollRect滚动问题

  利用DisplayObject的scrollRect属性可以很方便的设置DisplayObject的显示及滚动区域,不过设置scrollRect后如果再获取DisplayObject.height时,其值和设置scrollRect之前的DisplayObject.height不同,而是scrollRect.height(DisplayObject.width一样)。这下要根据DisplayObject.height来更新滚动条的滚动区域或者只是获取原来的DisplayObject.heigt就会出现问题了。当然,最简单也是最笨的办法是可以在设置scrollRect前先用一个临时变量保存其DisplayObject.height。不过对于我的程序问题来说这种方法行不通,因为我显示出来的有文字和图片,在图片加载完成前显示时要先设置滚动条,在图片加载完成后要更新滚动条,这就出现了上述的问题。

  描述完后上解决方法,解决方法是从国外的一个论坛找到的,它是获取显示对象的全部区域的边界,其边界的宽高就是显示对象没有设置scrollRect的宽高,我们就可以根据这个宽度和高度来更新或者做其他事了。之前我也考虑过,不过我是用DisplayObject.getBounds和DisplayObject.getRect尝试获得,返回的是其scrollRect区域并不是其全部区域。

  下面是获取显示对象的全部区域边界的方法:

static public function getFullBounds ( displayObject:DisplayObject ) :Rectangle
  {
    var bounds:Rectangle, transform:Transform,     toGlobalMatrix:Matrix, currentMatrix:Matrix;     transform = displayObject.transform;     currentMatrix = transform.matrix;     toGlobalMatrix = transform.concatenatedMatrix;     toGlobalMatrix.invert();     transform.matrix = toGlobalMatrix;     bounds = transform.pixelBounds.clone();     transform.matrix = currentMatrix;     return bounds;   }

 

转载于:https://www.cnblogs.com/skybdemq/archive/2011/12/19/2293727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值