Actionscript 3-fl.controls.UIScrollBar-设置scrollPosition不起作用



我有一个滚动条(fl.controls.UIScrollBar),我在类中动态创建它,并将其添加到后台。

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;

我的方法调用不会更新滚动拇指。有什么想法吗?

Salut Mihai,

一开始我觉得很奇怪。我原以为设定这个值就足够了。如果我在回车框循环中设置scrollPosition,它会起作用,但如果我直接使用setter,它就不会起作用。这可能意味着,如果您在创建/设置组件之后立即在内部进行调用,那么它还没有准备好。UI组件(如UIScrollBar)需要处理整个生命周期。如果你感兴趣的话,Jeff Kamerer有一套关于这方面的不错的devnet文章。

长话短说,组件还没有立即准备好,所以最好的办法是通过收听RENDER事件来等待它准备好:

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

最新更新