【发布时间】:2023-03-04 17:47:01
【问题描述】:
我在 Action Script 3 中进行多项选择测验,我想将我的问题和答案存储在 XML 文件中。运行测验时,我想从 XML 文件中提取 20 个问题并将它们随机化。关于如何将 XML 文件中的所有问题和答案放入一个数组并随机化该数组的任何想法?
谢谢
【问题讨论】:
标签: xml arrays actionscript-3 flash
我在 Action Script 3 中进行多项选择测验,我想将我的问题和答案存储在 XML 文件中。运行测验时,我想从 XML 文件中提取 20 个问题并将它们随机化。关于如何将 XML 文件中的所有问题和答案放入一个数组并随机化该数组的任何想法?
谢谢
【问题讨论】:
标签: xml arrays actionscript-3 flash
您的 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 是包含所有问题的数组的长度)并删除该元素,然后将其推送到新数组中。
【讨论】:
首先,将每个问题及其答案的xml节点转换为一个内部类。这将使您更轻松地管理数据。
这将输出您的类类型的对象数组。 然后你就这样打乱了数组
myArray.sort( function( obj0:*,obj1:* ):Boolean{ return Math.random() < 0.5; } );
然后您只需将数组一一循环。由于您的数据在对象本身中,因此答案和其他相关内容会随着排序区域中的对象一起传播。因此,您也不必重新排列相关的答案。
注意:排序函数并不关心它是什么对象类型,所以我使用通用类型作为参数。
【讨论】: