2012-03-20 98 views
0

我有一个滚动条(fl.controls.UIScrollBar),它是在一个类中动态创建的,并将其添加到舞台上。Actionscript 3 - fl.controls.UIScrollBar - 设置scrollPosition不起作用

public class Slider extends Sprite 
{ 
    private var scroll:UIScrollBar = new UIScrollBar(); 
    // etc. 

    // constructor 
    addChild(scroll); 
    scroll.setSize(15.75, 205.3); 
    scroll.direction = ScrollBarDirection.HORIZONTAL; 
    scroll.setScrollProperties(150, minScrollPos, maxScrollPos,snapInterval); 
    scroll.addEventListener(ScrollEvent.SCROLL, scrollHandler); 
} 

然后,我打电话

scroll.scrollPosition = 30; 

我的方法调用不会为什么更新滚动thumb.Any想法?

+0

谢谢你,这是伟大的我!新的,我不能推上按钮。我会尽快收到一些积分。 – 2012-03-21 14:12:32

回答

0

Salut Mihai

我发现起初很奇怪。我预计设定的价值就足够了。 如果我在一个输入框循环中设置scrollPosition,它会起作用,但如果我马上使用setter,则不会。这可能意味着如果您在创建/设置组件后立即进行调用,那么内部尚未就绪。 UIComponent(如UIScrollBar)有整个生命周期来处理。如果你有兴趣的话,Jeff Kamerer对此有一个很好的设置devnet articles

长话短说,该组件没有准备马上,所以最好的办法是通过听取RENDER事件等待它做好准备:

scroll.addEventListener(Event.RENDER,rendered); 
function rendered(event:Event):void { 
    scroll.removeEventListener(Event.RENDER,rendered); 
    scroll.scrollPosition = 30; 
}