Что получает чтение из несуществующего тега XML, прочитанного Action Script 3? - PullRequest
0 голосов
/ 05 августа 2011

Как следует из названия, предположим, у меня есть гипотетический XML, содержащий это:

<dialogue>
    <bg>1</bg>
    <speech>Oh, what a nice bg1.</speech>
</dialogue>
<dialogue>
    <playsnd>lala.wav</playsnd>
    <speech>Still same bg, but now a sound is played!.</speech>
</dialogue>

Я читаю его с помощью цикла for:

for (i=0; i<loop; i++)
{
    speeches[i] = xmlData.script.dialogue[i].speech;
    bgs[i] = Number(xmlData.script.dialogue[i].bg);
    sounds[i] = xmlData.script.dialogue[i].playsnd;
}

Я могу проверить, еслиопределенная речь изменяется на bg, просто делая это:

if(bgs[i])
{
//true!
}

Но я не имею ни малейшего представления о том, что я должен сравнивать в случае звуков, я пробовал много, например:

if(sounds[i])
if(sounds[i] != null)
if(sounds[i] != "")
if(sounds[i] != " ")

Но ничего не работает ... так что же может содержать звуки [0] в примере XML?Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2011

xmlData.script.dialogue[i].playsnd даст вам значение типа XMLList, которое представляет собой список всех элементов <playsnd>. Вы хотите проверить, является ли этот список пустым (т.е. содержит ноль элементов), поэтому:

if(sounds[i].length() != 0)
    // do whatever

Редактировать: Если у вас когда-либо будет только один элемент <playsnd>, то может быть более целесообразно извлечь первый элемент из XMLList в цикле:

for(...)
{
    ...
    sounds[i] = xmlData.script.dialogue[i].playsnd[0];
}

Тогда вы можете проверить нулевое значение, и оно будет работать так, как вы ожидаете:

if(sounds[i] != null)
    // do whatever
1 голос
/ 05 августа 2011

Вы должны проверить неопределенность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...