Flex3: как «перезагрузить» компонент - PullRequest
0 голосов
/ 21 октября 2010

Как я, по сути, «сбрасываю» компонент, чтобы он выглядел так же, как и при первой загрузке. Например, у меня есть 3 кнопки в HBox. Они начинаются как красный, видимый и имеют метку. Затем я программно вносю в них различные изменения - меняю цвет некоторых из них, меняю видимость некоторых из них и т. Д.

Затем мне нужно «перезагрузить» этот HBox, чтобы он вернулся к тому, как он выглядел в начале. Есть простой способ сделать это? (У меня есть много компонентов, которые необходимо изменить).

<mx:HBox>
    <mx:Button id="button1"
        label="button1" 
        fillColors="[red, red]" 
        toggle="true" click="myClickHandler"/>

    <mx:Button id="button2" 
        label="button1" 
        fillColors="[red, red]" 
        toggle="true" click="myClickHandler"/>

    <mx:Button id="button3" 
        label="button1" 
        fillColors="[red, red]"  
        toggle="true" click="myClickHandler"/>
</mx:HBox>

Если у вас есть предложение, пожалуйста, дайте мне знать. Спасибо.

-Laxmidi

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Вы уже проблематично меняете этот код во время выполнения. Просто напишите метод, чтобы вернуть его в состояние по умолчанию. Это, вероятно, то, что я бы сделал.

Или же, если это инкапсулированный компонент, вы всегда можете удалить его с помощью removeChild, создать другой экземпляр и поместить этот новый в то же место.


В комментариях приведен код psuedo для зацикливания дочерних элементов компонента и изменения свойств:

for (var i : int =0; i<hBox.numChildren; i++){
  var child : UIComponent = hBox.getChildAt(i);
  child.setStyle('style','defaultValue');
  child.property = 'default value'
}
0 голосов
/ 21 октября 2010
<mx:Application>
    <mx:Script>
        private function onColorChange():void
                {
                    can.removeAllChildren();

                    var loader:Loader = new Loader();
                    loader.load(new URLRequest('assets/images/logo/1.png'));
                    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

                    /* image= new Image();
                    image.source = "assets/images/logo/1.jpg";
                    image.setStyle('horizontalCenter','0');
                    image.setStyle('verticalCenter','0'); */

                    //can.addChild(image);

                    txt= new Text();
                    txt.text = "Ankur sharma";
                    txt.styleName = "font";
                    txt.setStyle('fontFamily','Anime Ace');
                    txt.rotation = -10;

                    can.addChild(txt);

                    can.mask = txt;
                    //applyFilter(CC.uint2rgb(cp.selectedColor));
                }

                private function onComplete(event:Event):void
                {
                    rect = new Rectangle();
                    rect = txt.getBounds(can);  

                    can.graphics.clear();   
                    can.graphics.beginBitmapFill(event.currentTarget.content.bitmapData);
                    can.graphics.drawRect(rect.x,rect.y,rect.width,rect.height);
                    can.graphics.endFill();

                }
    </mx:Script>

    <mx:ColorPicker id="cp" change="onColorChange()"/>
        <mx:Canvas id="can" height="100%" horizontalCenter="0" verticalCenter="0" borderStyle="solid" borderColor="#CCCCCC" borderThickness="5">
            <mx:Image source="assets/images/logo/1.png" horizontalCenter="0" verticalCenter="0"/>
            <mx:Text text="Ankur Sharma" styleName="font" rotation="-10"/>
        </mx:Canvas>
        <mx:Style source="style.css"/>
    </mx:Application>

в этом примере, что я делаю, удаляю всех потомков в ma canvas (id = can), затем вносит изменения в существующие компоненты и затем добавляет их обратно в холст,

эта программа маскируется разными способами, у моего холста двое детей, и я помещаю ма текст в виде маски поверх холста, и я заполняю канву растровым изображением, вот и все

я надеюсь, что это hepls

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...