从Action Script 3读取的不存在的XML标记中读取什么?

时间:2011-08-04 20:36:31

标签: xml flash actionscript-3

正如标题所说,假设我有一个假设的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 个答案:

答案 0 :(得分:1)

你应该检查undefined。

答案 1 :(得分:1)

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];
}

然后你可以检查null,它会按照你期望的方式工作:

if(sounds[i] != null)
    // do whatever