在类中滚动UIScrollBar组件时出现问题

时间:2008-09-11 15:55:27

标签: flash actionscript-3 actionscript

我正在尝试将UIScrollbar组件的实例附加到在加载某些XML之后正在创建的类的实例内的动态文本字段中。滚动条组件正在正确连接,因为滑块的大小取决于文本字段中的内容量,但是,它不会滚动。

以下是代码:

function xmlLoaded(evt:Event):void
{   
    //do some stuff

    for(var i:int = 0; i < numProfiles; i++)
    {
        var thisProfile:profile = new profile();

        thisProfile.alpha = 0;
        thisProfile.x = 0;
        thisProfile.y = 0;
        thisProfile.name = "profile" + i;

        profilecontainer.addChild(thisProfile);

        thisProfile.profiletextholder.profilename.htmlText = profiles[i].attribute("name");
        thisProfile.profiletextholder.profiletext.htmlText = profiles[i].profiletext;

        //add scroll bar
        var vScrollBar:UIScrollBar = new UIScrollBar();
        vScrollBar.direction = ScrollBarDirection.VERTICAL;
        vScrollBar.move(thisProfile.profiletextholder.profiletext.x + thisProfile.profiletextholder.profiletext.width, thisProfile.profiletextholder.profiletext.y);
        vScrollBar.height = thisProfile.profiletextholder.profiletext.height;
        vScrollBar.scrollTarget = thisProfile.profiletextholder.profiletext;
        vScrollBar.name = "scrollbar";
        vScrollBar.update();
        vScrollBar.visible = (thisProfile.profiletextholder.profiletext.maxScrollV > 1);

        thisProfile.profiletextholder.addChild(vScrollBar);

        //do some more stuff
    }
}

我还在movieclip /类本身中使用UIScrollBar组件尝试了它,但它仍然无效。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

从类似于此的单独函数初始化文本字段后,您可以尝试添加滚动条:

private function assignScrollBar(tf:TextField, sb:UIScrollBar):void {
    trace("assigning scrollbar");
    sb.move(tf.x + tf.width, tf.y);
    sb.setSize(15, tf.height);
    sb.direction = ScrollBarDirection.VERTICAL;
    sb.scrollTarget = tf;
    addChild(sb);
    sb.update();         
}

这就是我目前的做法。

答案 1 :(得分:0)

您是否尝试将UI滚动条放在舞台上,在设计时将其绑定到文本字段,然后在加载的事件期间调用update()?

我过去曾经有过一些有趣的经验,可以在运行时动态创建UIScrollbars。

答案 2 :(得分:0)

在你的第一个例子中,你试过把 vScrollBar.update(); 声明之后 addChild(vScollbar);