0

我动态生成面板并以这种方式将它们置于其他状态,因此在一种状态下,您在左侧有一个面板列表,在右侧有一个大面板,例如在一种状态下,当您单击左侧的列表时(使用小面板)该面板取代了大面板的位置,而大面板又回到了原位。所以我在左边有 50 个面板,我想向下滚动它们,但我不想让大面板和它们一起向下,我希望它固定。替代文字 这是我得到的地方,我不知道该怎么做这是我的代码:

enter code here

受保护的功能canvas1_creationCompleteHandler(事件:FlexEvent):无效{

            blurEffect= new BlurEffect(myBlur,myUnBlur);

            listEventsResult.token=eventService.listEvent();
            blurEffect.initFilter(event);


            panels=generatePanels(panelNumber);
            var vBox:VGroup= new VGroup();


            states=statesList.toArray();

            trace("stavi sequence i sostojba e"+ states[0].toString());

            for(var i:int=0; i<panelNumber ;i++)        // get panel from list panels and set states
            {
                 addChild(panels.getItemAt(i) as Panel);    
                (states[i] as State).overrides=[ new SetProperty(panels.getItemAt(i),"x",110), new SetProperty(panels.getItemAt(i),"y",0),
                    new SetProperty(panels.getItemAt(i),"width",widthBigPanel), new SetProperty(panels.getItemAt(i),"height",heightBigPanel)
                    //,new AddChild(g2,(panels.getItemAt(k) as Panel))
                    //,new SetProperty(panels.getItemAt(i),"scaleZ",110)
                ];
                trace("vlegov override za new state");
                var yy:int=0;


                for(var k:int=0;k<panelNumber;k++)
                {
                    trace("menuvam state: yy = " + yy);
                    if(k!=i){
                        vBox.addChild(panels.getItemAt(k) as Panel);
                        (states[i] as State).overrides = (states[i] as State).overrides.concat([ new SetProperty(panels.getItemAt(k),"x",x), new SetProperty(panels.getItemAt(k),"y",yy),
                            new SetProperty(panels.getItemAt(k),"width",widthPanel), new SetProperty(panels.getItemAt(k),"height",heightPanel)
                        //,new AddChild(g1,(panels.getItemAt(k) as Panel))
                        ]);
                        yy+=110;
                    }
                }

                for(z=0; z<(states[i] as State).overrides.length; ++z){
                    var tempSetProperty:SetProperty= (states[i] as State).overrides[z] as SetProperty;
                    trace("\nname: " + tempSetProperty.name);
                    trace("target: " + tempSetProperty.target);
                    trace("value: " + tempSetProperty._value);
                }


                setCurrentState("state0");
                addChild(vBox);
            }

            //sequence.targets=panels.toArray();
            t1.targets=panels.toArray();

        }
4

1 回答 1

1

您可以进行常规滚动,但添加一个垂直滚动条侦听器,scroll="myScroll(event),它会在滚动发生时重新定位大面板(使用面板的原始 x,y 值和 verticalScrollPosition 属性之类的东西)。

或者,您可以在第一个画布之上添加第二个画布,并将其背景设置为透明。将大面板放在透明画布上,使其不会滚动(如果适合,则在滚动完成时将其放回原始画布)。

这两者都在处理(尤其是透明画布)上很重(ish)。

于 2010-12-03T09:58:24.360 回答