Как прокрутить элементы на холсте в разных состояниях и в разных контейнерах, а не перемещать другие - PullRequest
0 голосов
/ 02 декабря 2010

Я генерирую панели динамически и помещаю их в другие состояния таким образом, чтобы в одном состоянии у вас был список панелей слева и одна большая панель справа, например, в одном состоянии, и когда вы нажимаете на список в слева (с маленькими панелями) эти панели занимают места большой панели, а большая возвращается на место. Итак, у меня есть 50 панелей слева, и я хочу прокрутить их вниз, но я не хочу, чтобы большая панель опускалась вместе с ними, я хочу, чтобы она была исправлена. alt text это где я получил, и я не знаю, как это сделать вот мой код:

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();

        }

1 Ответ

1 голос
/ 03 декабря 2010

Вы можете выполнять обычную прокрутку, но добавьте прослушиватель с вертикальной полосой прокрутки, scroll = "myScroll (событие), который перемещает большую панель по мере прокрутки (используя что-то вроде первоначальных значений x, y панели и verticalScrollPosition собственность).

Кроме того, вы можете добавить второй холст поверх первого и установить его фон прозрачным. Поместите большую панель на прозрачный холст, чтобы она не прокручивалась (и верните ее на исходный холст, когда прокрутка завершится, если это подходит).

Оба они тяжелые (иш) при обработке (особенно прозрачный холст).

...