Flash as3 генерирует динамические кнопки из XML и ссылается на связанные данные по клику - PullRequest
0 голосов
/ 17 ноября 2011

Привет, у меня проблемы с флэш-кодом.Я думаю, что я только немного из моей глубины, поэтому любая помощь будет оценена.

У меня есть XML-файл со следующей структурой:

<buttons>
    <button>
        <id>Garden</id>
        <xPos>99</xPos>
        <yPos>364</yPos>
        <content>
        <![CDATA[
<h1>Walls</h1>here is information on Garden's will go here<br> enter any information you like and it will be displayed in the information panel.<br>here is a example product link: <a href="http://coccosrl.dizzyhigh.com/category/prodotti/">tutti prodotti</a><br>and here is another<a href="http://coccosrl.dizzyhigh.com/prodotti/bordi-battentati/">bordi-battentati</a><br>
        ]]>
        </content>
    </button>
    <button>
        ..................
    </button>
</buttons>

Я хочу загрузить эти данные вмигать, и чтобы кнопки отображались на экране в соответствующих координатах x / y.При нажатии кнопки для отображения информации из узла содержимого для связанной кнопки.

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

какя могу сослаться на узел содержимого из xml для связанной кнопки?

frame1 Code:

stop();
import myGlobal;

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, showXML);
xmlLoader.load(new URLRequest("buttons.xml"));
function showXML(e:Event):void {
    XML.ignoreWhitespace = true; 
    myGlobal.buttonData = new XML(e.target.data);
    trace(myGlobal.buttonData.button.length());
    gotoAndStop("main");
}

frame 2 Code (main):

stop();    
var i:Number;
    for (i=0; i < myGlobal.buttonData.button.length(); i++) {
        trace(" name of button: "+ myGlobal.buttonData.button[i].title.text());
        trace(" xPos: "+ myGlobal.buttonData.button[i].xPos.text());
        trace(" yPos: "+ myGlobal.buttonData.button[i].yPos.text());
        trace(" yPos: "+ myGlobal.buttonData.button[i].content.text());
        //add button to stage
        this[myGlobal.buttonData.button[i].title.text()] = new iBtn(); 
        this[myGlobal.buttonData.button[i].title.text()].y = myGlobal.buttonData.button[i].yPos.text();
        this[myGlobal.buttonData.button[i].title.text()].x = myGlobal.buttonData.button[i].xPos.text();

        addChild(this[myGlobal.buttonData.button[i].title.text()])
        this[myGlobal.buttonData.button[i].title.text()].addEventListener(MouseEvent.CLICK, btnClick);
    }
    function btnClick(e:MouseEvent):void
    {
        //do all the stuff i want to happen when a button is clicked here....
            trace(e.target.id);
    }

Я использую файл myGlobal.as в качестве держателя для всех своих данных, чтобы я мог получить к нему доступ по всему флагу:

package {
    public class myGlobal {
        public static var buttonData:XML;
        public static var panelStatus:Boolean = new Boolean();
    }
}

1 Ответ

0 голосов
/ 17 ноября 2011

нашел часть ответа в этой теме: создание динамической навигации из XML-файла во флэш-памяти cs3

что я сделал, так это чтобы в моем коде была кнопка для генерации:

this[myGlobal.buttonData.button[i].title.text()].myContent = myGlobal.buttonData.button[i].content.text();

затем в функции щелчка:

function btnClick(e:MouseEvent):void
{
    trace(e.target.myContent);
    Object(root).infoPanel.panelClip.infoText.htmlText = e.target.myContent;
    if(myGlobal.panelStatus == false){
        Object(this).infoPanel.gotoAndPlay("show");
    }   
};

Я не знал, что могу добавить дополнительную информацию к кнопке, это намного чище, чем каждый раз искать ссылку на xml.

...