1

XMLを使用してボタンのリストを作成しているプロジェクトに取り組んでいます。これらのボタンの1つを押すと、新しいxmlがロードされ、「サブボタン」が作成されます。

私が書いたコードでは、トップレベルボタン(第1レベルボタン)を押すと、サブボタンを作成してテキストデータをロードするxmlが読み込まれますが、別のトップレベルボタンを押すと、すべてが機能します。新しいxmlをロードし、サブボタンを作成し、さまざまなテキストデータをロードします.......しかし、古いサブボタンもあります...。

古いサブボタンを削除できるようにしたい。私はグーグルで検索しましたが、助けを得ることができませんでした:/どんな助けでも大歓迎です。

コードは、トップレベルのボタンが作成され、CLICKMouseEventがそれらのボタンに割り当てられたときから始まります。

function onButtonClick(me:MouseEvent):void {
    xmlLoader.load(new URLRequest(bookElement.xmllink.toString()));
    xmlLoader.addEventListener(Event.COMPLETE, onSubXmlLoad);
}

function onSubXmlLoad(e:Event):void {
    trace("xml loaded");
    new_sub_xml = new XML(sub_xmlLoader.data);
    var Books:XMLList = new_sub_xml.name.books;
    var len:int = Books.length();
    trace(len + " Books");

    for (var i:int = 0; i < len; i++) {
            sub_btn = new SubFeatureButton();
            sub_btn.x = 10 + i * 50;
            sub_btn.y = 90;
            addChild(sub_btn);
            sub_btn.name = "sub_btn" + i;
            sub_btn.buttonMode = true;
            trace(sub_btn + i);

    }
}
4

1 に答える 1

0

おそらく、サブナビゲーションボタンのコンテナを作成する必要があります。また、これらのボタンへの参照をある種の配列に保持すると、作業が簡単になります。

以下のコードは機能するはずです

var subNav:Sprite = new Sprite();
subNav.x = 0;
subNav.y = 0;//put the right values here
addChild(subNav);

function onButtonClick(me:MouseEvent):void {
    xmlLoader.load(new URLRequest(bookElement.xmllink.toString()));
    xmlLoader.addEventListener(Event.COMPLETE, onSubXmlLoad);
}

function onSubXmlLoad(e:Event):void {
    trace("xml loaded");
    new_sub_xml = new XML(sub_xmlLoader.data);
    var Books:XMLList = new_sub_xml.name.books;
    var len:int = Books.length();
    trace(len + " Books");

    while(subNav.numChildren >0)
    {
        subNav.removeChildAt(0);
    }

    for (var i:int = 0; i < len; i++) {
            sub_btn = new SubFeatureButton();
            sub_btn.x = 10 + i * 50;
            sub_btn.y = 90;
            subNav.addChild(sub_btn);
            sub_btn.name = "sub_btn" + i;
            sub_btn.buttonMode = true;
            trace(sub_btn + i);

    }
}
于 2013-03-18T10:59:10.707 に答える