Flash Builder 4.6 | Премахване на дете | s:TileGroup

Сигурен съм, че това е нещо супер просто, което ми липсва, но имам проблеми с премахването на VBox, който е вътре в s: Tilegroup. Не мога да го изтрия. За тест успях да изтрия VBox, когато добавих само към сцената (вместо s:TileGroup). Кодът по-долу показва концепцията, с която си играя също.

  • Имам бутон на сцената, както и празен s:TileGroup за стартиране
  • Когато щракнете върху бутона, той динамично добавя VBox (който съдържа добре текст) към s:TileGroup
  • Когато този VBox бъде създаден, аз също добавям слушател на събития, така че когато щракнете върху vbox, той може да бъде изтрит

<fx:Script>
    <![CDATA[
        protected function removeVBOX(event:Event):void{
            var t:DisplayObject = DisplayObject(event.target);
            t.parent.removeChild(t);
        }

        private function addVbox() : void {
            var vbox :VBox = new VBox();
            vbox.addEventListener(MouseEvent.CLICK,removeVBOX);

            vbox.width = 400;
            vbox.height = 500;
            vbox.horizontalScrollPolicy = "off";
            vbox.verticalScrollPolicy = "off";

            vbox.setStyle("backgroundAlpha", 0.39);
            vbox.setStyle("backgroundColor",  0x000000);
            vbox.setStyle("paddingLeft",  "15");
            vbox.setStyle("paddingTop",  "15");
            vbox.setStyle("paddingRight",  "15");
            vbox.setStyle("paddingBottom",  "15");

            var sText :RichText = new RichText();
            var sText2 :RichText = new RichText();
            var sText3 :RichText = new RichText();

            sText.text = "Hello 1";
            sText2.text = "Hello 2";
            sText3.text = "Hello 3";    

            //addElement(vbox);
            table.addElement(vbox);
            vbox.addElement(sText);
            vbox.addElement(sText2);
            vbox.addElement(sText3);

        }

    ]]>
</fx:Script>

<s:Button x="743" y="767" label="Button" click="addVbox()"/>
<s:TileGroup id="table" x="152" y="81" width="627" height="650" horizontalAlign="center" horizontalGap="13"
             orientation="columns" requestedColumnCount="1" verticalAlign="middle" verticalGap="13" >
</s:TileGroup>

person user3723584    schedule 05.10.2015    source източник
comment
Какво се случва, когато се опитате да изтриете своя VBox? Тих отказ, съобщение за грешка и т.н.?   -  person Brian    schedule 05.10.2015


Отговори (1)


Разглеждайки кода ви, виждам, че добавяте вашия VBox към TileGroup, както следва:

table.addElement(vbox);

Но след това се опитвате да го премахнете с помощта на removeChild():

t.parent.removeChild(t);

Правилният метод за добавяне/премахване на елементи към/от контейнери на Spark е add/removeElement():

var t:IVisualElement = IVisualElement(event.target);
t.parent.removeElement(t);
person Brian    schedule 05.10.2015
comment
съпоставянето на методите за добавяне/премахване го направи! Благодаря!! - person user3723584; 06.10.2015