我在Action Script 3中进行了多项选择测验,我希望将我的问题和答案存储在XML文件中。当测验运行时,我想从XML文件中提取20个问题并随机化它们。关于如何将XML文件中的所有问题和答案放入数组并随机化该数组的任何想法?
由于
答案 0 :(得分:1)
你的XML问题不是很具体,所以我假设你不知道从哪里开始。 This应该让你继续加载和解析XML。
一旦你有一系列问题,你可以使用一个简单的循环和array.splice来抽取20个随机问题来将它们移动到一个新的数组中:
var questions:Array = new Array();
while(questions.length < 20) {
questions.push(xmlQuestions.splice(Math.floor(Math.random() * xmlQuestions.length), 1));
}
这将选择0和n之间的随机索引(其中n是包含所有问题的数组的长度)并删除该元素,然后将其推入新数组。
答案 1 :(得分:1)
首先,将每个问题的xml节点及其答案转换为内部类。这将使您更容易管理数据。
这将输出您的类类型的对象数组。 然后你就这样洗牌了
myArray.sort( function( obj0:*,obj1:* ):Boolean{ return Math.random() < 0.5; } );
然后你只需逐个循环数组。由于您的数据位于对象本身中,因此答案和其他相关内容随排序区域中的对象一起传播。因此,您也不必置换相关答案。
注意:sort函数不关心它是什么对象类型,所以我使用了通用类型作为参数。