我有一个滚动条(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;
}