2011-12-31 5 views
0

Я играю с сохранением .xml файлов из данных в моей игре. Я знаю, как преобразовать объект xml в ByteArray и записать его в FileReference. Теперь мне нужно знать, как перейти от пустого объекта xml (используя var xml:XML = new XML()) к полностью заполненному объекту xml.AS3 & XML - Как создать данные xml в as3?

Может ли кто-нибудь показать мне, какие функции использовать для добавления узлов и значений? В частности, мне нужно знать, как сделать несколько узлов того же типа. Вот пример того, что конечный XML должен выглядеть следующим образом:

<data> 
    <player> 
     <money>15831</money> 
     <shipType>1</shipType> 
     <ship> 
      <fuelCur>450</fuelCur> 
      <energyCur>160</energyCur> 
      <shieldCur>100</shieldCur> 
      <armorCur>40</armorCur> 
      <structCur>15</structCur> 
     </ship> 
    </player> 
    <currentSystem>3</currentSystem> 
    <currentPlanet>3</currentPlanet> 
    <date> 
     <year>2012</year> 
     <month>10</month> 
     <day>15</day> 
    </date> 
    <missionFlag>true</missionFlag> 
    <planet id="0"> 
      <population>0</population> 
    </planet> 
    <planet id="1"> 
      <population>29827632</population> 
    </planet> 
    <planet id="2"> 
      <population>0</population> 
    </planet> 
</data> 

Это может быть полезно знать, как удалить, и как изменить узлы и ценности тоже.

Кроме того, нужно ли мне что-то импортировать из флеш-библиотеки, чтобы сделать это с помощью XML? Я использую FlashDevelop, но когда я набираю xml., FlashDevelop не вызывает такие предложения, как обычно.

ответ

8

Редактирование XML в AS3 на самом деле довольно просто и довольно просто - это основная часть AS3. AS3 автоматически добавляет узлы, как вы их называете, например, так:

var xml:XML = <data />; 
xml.player.money = 15831; 
xml.player.shiptype = 1; 
xml.player.ship.fuelCur = 450; 

будет приводить:

<data> 
    <player> 
     <money>15831</money> 
     <shiptype>1</shiptype> 
     <ship> 
      <fuelCur>450</fuelCur> 
     </ship> 
    </player> 
</data> 

Затем добавить кратные одного и того же узла, просто начать новый объект XML-типа вы хотите , и добавьте его к объекту XML, над которым вы работаете. Или полностью исключить отдельный объект xml. Повторите столько раз, сколько необходимо:

var segment:XML = <planet />; 
xml.appendChild(segment); // xml.planet[0] 
xml.appendChild(segment); // xml.planet[1] 
xml.appendChild(<planet />); // xml.planet[2] 
//etc... 

Тогда вы можете добавить к ним значения по их показателям.

//Assuming this is the 4th planet you've added... 
xml.planet[3].population = 29827632; 
+1

ha, все это время я только что использовал' appendChild() '- я не знал, что вы можете присоединять новые узлы с использованием точечного синтаксиса: D – divillysausages

+0

Существует не только много учебников, но и Я набираю «as3» в окне поиска Google, 4-й элемент в раскрывающемся списке «as3 xml». Вот несколько примеров учебников: [ex1] (http://www.republicofcode.com/tutorials/flash/as3xml/), [ex2] (http://willperone.net/Code/as3xml.php), [ex4 ] (http://www.thetechlabs.com/xml/create-a-as3-slideshow-with-xml/), [ex4] (http://delfeld.wordpress.com/2009/05/06/xml- quick-reference /) – iND

+0

@wvxvw - Упомянем, что XML - это основной тип данных в AS3, который помог мне понять, чем другие комментарии по этому вопросу. Благодаря! –

0

В FlashDevelop попробуйте создать отдельный файл XML целиком. Это даст вам лучший код подсказки.

Для XML, тем не менее, я обнаружил, что в рудиментарной версии Adobe docs on their XML class есть множество полезных примеров и инструментов для создания и использования объектов XML.

+0

Как сделать отдельный XML-файл? И как это поможет с подсказкой кода? –

+0

Ненавижу отвечать на вопрос, но на самом деле это основная информация FlashDevelop и AS3. Я думаю, что лучшие ответы будут найдены в Googling «as3 load xml tutorial» и «FlashDevelop создают новый XML-файл». – iND

+0

Я googled вокруг, и не нашел каких-либо особенно ясных учебников. http://www.kirupa.com/developer/actionscript/create_edit_xml.htm был тем, который я нашел, который казался мне нужным, но некоторые из функций даже не в модели XML из того, что я могу сказать. –