Flash 嵌套主权财富基金的动态荷载

Flash 嵌套主权财富基金的动态荷载,flash,actionscript-3,Flash,Actionscript 3,我是3号新手。希望我的问题是对的 背景: 我有一个名为MultipleChoiceQuestion的类,它从xml文件中提取词干和选项。每个问题的选择都是随机的。测验类有一组指定的多项选择题,可以动态加载。它还引用xml文件来确定问题的数量。测验根据正确答案控制问题的进展。主电影在适当的时间启动测验 问题 我希望问题构建是动态的,加载选择并随机化它们。我该怎么做?现在,我将测验发布为swf,然后将其加载到主电影中,但这是静态的,并且总是以相同的顺序进行相同的选择。如何动态地执行此操作? 提前感谢

我是3号新手。希望我的问题是对的

背景: 我有一个名为MultipleChoiceQuestion的类,它从xml文件中提取词干和选项。每个问题的选择都是随机的。测验类有一组指定的多项选择题,可以动态加载。它还引用xml文件来确定问题的数量。测验根据正确答案控制问题的进展。主电影在适当的时间启动测验

问题 我希望问题构建是动态的,加载选择并随机化它们。我该怎么做?现在,我将测验发布为swf,然后将其加载到主电影中,但这是静态的,并且总是以相同的顺序进行相同的选择。如何动态地执行此操作? 提前感谢您的帮助


为什么不创建一个带有answers属性的问题类,该属性将在一个数组中保存所有可能的答案

然后,您可以通过使用随机因子查询数组来随机化可能的答案

这样,您就不必一直查询XML,您将得到一组问题,这些问题可以在您调用randomAnswers方法的任何时候生成它们自己的多重选择

   //In your Question class

   private var answers:Array;
   private var questionText:String;
   private var currentQuestions:Array;

   private function init():void
   {
        //Populate answers & questionText from the XML data
        // Then set your current choice of questions
        loadXML(xmlURL); // results in xmlLoaded...
   }

   private function xmlLoaded( event:Event ):void
   {
        //If you need 4 different answers
        currentQuestions = randomAnswers(4 );
   }

   // Set the number of answers required as a parameter
   private function randomAnswers( numAnswer:int ):Array
   {
        //The Array holding the set of random answers
        var ans:Array = [];

        //i've kept this basic for simplicity's sake
        //but you could remove a question that's already been stored
        //in order not to end up in some infinite loop...
        for( var i:int ; i < answers.length; ++i )
        {
              //set a random integer
              var rand:int = Math.random() * answers.length;

              //if the answer is not already stored, add it
              if( ans.indexOf( answers[rand] ) == -1 )
                 ans.push( answers[rand] );
              else // otherwise try again
                --i;
        }

        return ans;
    }
//在您的问题类中
私有变量:数组;
私有文本:字符串;
私有变量:数组;
私有函数init():void
{
//从XML数据填充答案和问题文本
//然后设置您当前选择的问题
loadXML(xmlURL);//结果为xmlLoaded。。。
}
私有函数xmlLoaded(事件:事件):void
{
//如果你需要4个不同的答案
当前问题=随机答案(4);
}
//将所需答案数设置为参数
私有函数随机应答(numAnswer:int):数组
{
//包含随机答案集的数组
var-ans:Array=[];
//为了简单起见,我保留了这个基础
//但您可以删除已存储的问题
//为了不在某个无限循环中结束。。。
for(变量i:int;i
在不完全改变游戏结构的情况下,应该可以实现由用户输入触发的随机功能,即MouseEvent或任何事件触发您所指的幻灯片

另一方面,我从你的描述中得到的印象是,你的设计与你的内容有关,这可能是你问题的根源

如果是这种情况,应该可以创建包含所有XML数据(幻灯片、答案等)的对象(问题类),并实现将显示的数据随机化的方法

为了实现这一点,您需要将XML数据加载到这些对象中,加载顺序甚至可能不相关。。。其思想是,您不应该完全依赖于XML结构


我只能在这里猜测,因为我没有您的应用程序的完整概述。

您能给我们展示一些XML解析器的代码吗?从数据中生成选择的部分。帕特里克:谢谢你的回答和编码。我有一个随机的Shufferray函数。我的问题是,当我发布测验时,随机化只发生一次,但我需要在主电影加载时,它是动态的。公共函数Shufferray(passedArray:Array):数组{var arrayLength:Number=passedArray.length-1;用于(var i:int=0;iSorry它不允许我回答我自己的问题,也不能在注释中添加代码。重点不在于shuffle函数,而是在加载xml数据后将问题加载为类的可能性。每个问题都有自己可能的答案,您可以随时通过调用“我”来洗牌这些答案thod。为我的误解道歉。我想我迷路的地方是将问题加载为类。不知道如何进行。你创建一个问题类,至少有一个变量来保存问题文本,一个数组或向量来保存多个选项。加载XML数据时,只需解析XML并创建一组例如,您可以在向量中保留的问题。在此之后,您可以停止查询您的XML,只需按照您希望的任何顺序操作问题,并在您希望的任何时间对答案调用shuffle方法。