Я создаю игру в Starling и хочу использовать XML для сохранения всех сообщений, которые появляются в игре. Вот пример того, как он будет использоваться:ActionScript XML - Извлечение списка выбранного узла
<?xml version="1.0" encoding="utf-8" ?>
<data>
<items>
<bottle>
<interact>
<examine>
<state id="1">
<message id="1">This is the first time I have seen this bottle</message>
<message id="2">This is the first time I have seen this bottle 2</message>
<message id="3">This is the first time I have seen this bottle 3</message>
<message id="4">This is the first time I have seen this bottle 4</message>
</state>
<state id="2">
<message id="1">This is the second time I have seen this bottle</message>
<message id="2">This is the second time I have seen this bottle 2</message>
<message id="3">This is the second time I have seen this bottle 3</message>
<message id="4">This is the second time I have seen this bottle 4</message>
</state>
<state id="3">
<message id="1">This is the third time I have seen this bottle</message>
<message id="2">This is the third time I have seen this bottle 2</message>
<message id="3">This is the third time I have seen this bottle 3</message>
<message id="4">This is the third time I have seen this bottle 4</message>
</state>
</examine>
<chat>
<state>
<message id="1">I cannot talk to a bottle</message>
<message id="2">I cannot talk to a bottle 2</message>
<message id="3">I cannot talk to a bottle 3</message>
<message id="4">I cannot talk to a bottle 4</message>
</state>
</chat>
<action>
<state>
<message id="1">I picked up the bottle</message>
<message id="2">I picked up the bottle 2</message>
<message id="3">I picked up the bottle 3</message>
<message id="4">I picked up the bottle 4</message>
</state>
</action>
</interact>
</bottle>
<item2>
<interact>
<examine>
<state id="1">
<message id="1">This is the first time I have seen item 1</message>
<message id="2">This is the first time I have seen item 2</message>
<message id="3">This is the first time I have seen item 3</message>
</state>
<state id="2">
<message id="1">This is the second time I have seen item 1</message>
<message id="2">This is the second time I have seen item 2</message>
<message id="3">This is the second time I have seen item 3</message>
</state>
<state id="3">
<message id="1">This is the third time I have seen item 1</message>
<message id="2">This is the third time I have seen item 2</message>
<message id="3">This is the third time I have seen item 3</message>
</state>
</examine>
<chat>
<state>
<message id="1">I cannot talk to a item</message>
<message id="2">I cannot talk to a item 2</message>
<message id="3">I cannot talk to a item 3</message>
<message id="4">I cannot talk to a item 4</message>
</state>
</chat>
<action>
<state>
<message id="1">I picked up the item</message>
<message id="2">This may be useful</message>
<message id="3">I will use this for something</message>
<message id="4">I have put it in my pocket</message>
</state>
</action>
</interact>
</item2>
</items>
<characters></characters>
<backgrounds></backgrounds>
</data>
Как вы можете видеть, что есть структура для 3-х типов взаимодействия с элементом. изучать, говорить и действовать (например, pickup). Идентификатор состояния определяет состояние игры (насколько прогресс был достигнут в игре), это важно, поскольку сообщения могут меняться в зависимости от того, что произошло. Когда произошло событие, это обновляет все в игре. НАПРИМЕР.
Состояние 1:
«! Я не могу пикап этот пункт, пока я разговаривал с Роджером»
Поговорите с Роджером и перейти в состояние 2:
Государственных 2: «Я поднял предмет, потому что я говорил с Роджером»
Я создал класс называется окно сообщений, который извлекает XMLList, на основе состояния и currentTarget (пункт)
Что такое хороший способ получить только те узлы, я хочу:
Я хочу, чтобы получить :
<message id="1">I picked up the item</message>
<message id="2">This may be useful</message>
<message id="3">I will use this for something</message>
<message id="4">I have put it in my pocket</message>
Я не хочу, чтобы выписать огромный, если заявление, чтобы вернуть узлы, которые я хочу:
//get a list
if (item2 && state == 1) {
var message:XMLList = messageXML.items.item2.interaction.action.state.text();
}
else if(item2 && state = 2) {
var message:XMLList = messageXML.items.item2.interaction.action.state.text();
}
etc....
Большая проблема, любая помощь будет принята с благодарностью.
UPDATE:
Я хочу, чтобы вернуть XMLList с строк, передаваемых через в способе, как это:
private function searchForMessages(message:XML, target:String, state):XMLList
{
}
Извинения позвольте мне внести изменения в код для большей ясности. –
Спасибо, что это прекрасно. –