0

我正在 Action Script 3 中进行多项选择测验,我想将我的问题和答案存储在 XML 文件中。运行测验时,我想从 XML 文件中提取 20 个问题并将它们随机化。关于如何将 XML 文件中的所有问题和答案放入一个数组并随机化该数组的任何想法?

谢谢

4

2 回答 2

1

您的 XML 问题不是很具体,所以我假设您不知道从哪里开始。应该让您继续加载和解析 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 是包含所有问题的数组的长度)并删除该元素,然后将其推送到新数组中。

于 2013-08-13T10:10:10.820 回答
1

首先,将每个问题及其答案的 xml 节点转换为内部类。这将使您更容易管理数据。

这将输出您的类类型的对象数组。然后你就这样打乱了数组

myArray.sort( function( obj0:*,obj1:* ):Boolean{ return Math.random() < 0.5; } );

然后你只需一个一个地循环数组。由于您的数据在对象本身中,因此答案和其他相关内容与排序区域中的对象一起传播。因此,您也不必置换相关的答案。

注意:排序函数不关心它是什么对象类型,所以我使用通用类型作为参数。

于 2013-08-13T14:35:02.850 回答