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;   }

 

你可能感兴趣的:(scroll)