Actionscript 3 ScrollPane内容未更新Scrollbars

时间:2014-07-15 14:22:07

标签: actionscript-3 flash

我添加了一个滚动窗格,然后我添加了一个在精灵中导出的自定义影片剪辑,但是当我执行所有这些操作后,点击更新命令,ScrollPane永远不会更新,也不会显示任何滚动条。

代码如下:

 function doneLoad(e:Event):void {
        trace("doneload");
        var bm:Bitmap = e.target.content as Bitmap;
        bm.smoothing = true;
        bm.x = 20;
        bm.y = 20;
        bm.width = 80;
        bm.height = 80;



        shape1.addChild(getTextField("Helvetica",12,"0x31b1e1","left","Name:",120,10));
        shape1.addChild(getTextField("Helvetica",12,"0xcccccc","left",user.name,120,28));

        shape1.addChild(bm);
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,doneLoad);
        loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,loadingError); 
        sql.removeEventListener(SQLEvent.POST_COMPLETE,dataPostResponse);

        scroll = new ScrollPane();
        scroll.width = 320;
        scroll.height = 300;
        scroll.x = 0;
        scroll.y = 140;
        scroll.verticalScrollPolicy = ScrollPolicy.AUTO;
        //scroll.verticalScrollPolicy = ScrollPolicy.ON;
        shape1.addChild(scroll);

        //var content:DisplayObject = new DisplayObject();
        content = new Sprite();

        var dd:mc_countryDP = new mc_countryDP();
        content.addChild(dd);
        dd.x = 0;
        dd.y = 280;

        //scroll.addChild(content);
        scroll.source = content;

        loader = null;

        mc_user.visible = true;
        //content.addEventListener(Event.COMPLETE, completeHandler);
        scroll.update();
    }

1 个答案:

答案 0 :(得分:0)

正如其他人所说,您无需更新滚动窗格。如果更改了附加到其上的源的内容,则只需更新滚动窗格。首次附加源时,它会自动将滚动窗格更新为新大小。

至于定位,当你向其他东西添加东西时,位置(x,y)将相对于那个。换句话说,如果我有精灵A,它位于舞台上(100,100),我将精灵B附加到它,然后我将B的位置设置为(10,10),然后精灵B将显示为虽然它位于舞台的位置(110,110)。这是因为它是对精灵A的位置(10,10),它恰好已经从阶段的原点偏移了(100,100)。因此,当您将对象附加到"内容"然后将其y设置为280,您将其设置为280以引用内容的位置,在这种情况下,它位于滚动窗格内。

最后,您应该考虑使用继承的函数setSize和move,而不是手动设置x / y和width / height。我怀疑这样做会产生任何负面影响,但我认为比抱歉更安全。

希望能够清除它,尽管这可能太过于罗嗦了。