2012-07-26 38 views
0

使用Flash CS5我今天遇到了一些奇怪的事情。ActionScript 3:UIScrollBar錯誤(?) - 容器的寬度返回+ 85px

UIScrollBar組件的剛性寬度爲15px。當你將它添加到像Sprite這樣的容器時,你會希望精靈的寬度返回15,但它返回100!

下面是一個示例代碼。

import flash.display.Sprite; 
import fl.controls.UIScrollBar; 

var spr:Sprite = new Sprite(); 
addChild(spr); 
trace('spr.width:',spr.width); 

var bar:UIScrollBar = new UIScrollBar(); 
spr.addChild(bar); 
trace('bar.width',bar.width); 
trace('spr.width:',spr.width); 

有趣的是,輸出

spr.width:0
bar.width 15
spr.width:100

有誰知道發生了什麼呢?這是一個錯誤?

回答

0

發現它是一種錯誤。會發生什麼事情呢,它需要一段時間才能在舞臺上繪製/渲染組件,所以它的大小隻有在繪製後才能被訪問。爲了記錄,在我的電腦中需要1毫秒。直到它返回預期值。

另一個令人驚訝的問題是,UIScrollBar返回15px的寬度,而容器精靈返回16px。對於那些尋找原因的人來說,它可能與thickness=1scaleMode=LineScaleMode.NONE繪製的酒吧輪廓有關。我和我寫的類有完全相同的問題,其中我必須通過將每個超級方法的返回值加1來覆蓋寬度和高度getter。