Flash CS6调用.xml文件时出现问题

时间:2014-07-28 07:18:03

标签: xml file flash

新手来到AS3,在学校做了一点但是暂时离开了比赛。

所以我的问题是;我在flash中有5个动态文本框。一个是问题,另外四个是潜在的答案。 我已经能够从XML文件中显示文本,这很好,但我的问题是它试图一次显示所有问题,而不是一次显示一个。

循环会修复这样的东西吗?不知道该怎么办,因为我对AS3来说还是比较新的。

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;


var xmlData:XML = new XML();
var theURL_ur:URLRequest = new URLRequest("questions.xml");
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);

function fileLoaded(e:Event):void
{
    xmlData = XML(loader_ul.data);
question_txt.text = xmlData.question
one_txt.text = xmlData.option1
two_txt.text = xmlData.option2
three_txt.text = xmlData.option3
four_txt.text = xmlData.option4
}

这是xml文件。我想要它做的是显示一个问题,然后在你回答上一个问题后立即转到下一个问题,而不是一次显示所有问题。希望我在这里有意义:))

<?xml version="1.0"?>
<allquestions>

<question>What is the Capital of Australia?</question>
<option1>Melbourne</option1>
<option2>Canberra</option2>
<option3>Sydney</option3>
<option4>Brisbane</option4> 

<question>Who was the first Prime Minister of Australia?</question>
<option1>John Howard</option1>
<option2>Sir Edmond Barton</option2>
<option3>Computers</option3>
<option4>Some other guy</option4> 

1 个答案:

答案 0 :(得分:0)

在fileLoaded函数中你应该解析&amp;将数据保存在数组中,以便以后可以访问它:

var questions:Array;
var options1:Array;
var options2:Array;
var options3:Array;
var options4:Array;

function fileLoaded(e:Event):void{
  xmlData = XML(loader_ul.data);

  for each (var item:String in xmlData.question ) 
  {
    questions.push(item);
  }
  for each (var item:String in xmlData.option1 ) 
  {
    options1.push(item);
  }
  for each (var item:String in xmlData.option2 ) 
  {
    options2.push(item);
  }
  for each (var item:String in xmlData.option3 ) 
  {
    options3.push(item);
  }
  for each (var item:String in xmlData.option4 ) 
  {
    options4.push(item);
  }
}

您应该有一个单独的功能来显示您的问题:

function updateTextFields(currentQuestion:int):void{
  question_txt.text = questions[currentQuestion];
  one_txt.text = options1[currentQuestion];
  two_txt.text = options2[currentQuestion];
  three_txt.text = options3[currentQuestion];
  four_txt.text = options4[currentQuestion];
}

你必须在加载xml之后调用该函数(第一个问题的updateTextFields(0)),并且在每个回答事件之后(如果它的回答正确,则为false,无论你喜欢)。

你必须添加一个int变量来迭代问题,并在每个正确的答案后递增它。(或者你可以使用Math.floor显示一个随机问题(Math.random()* questions.length))< / p>