Xml 如何在flash cs3中设置随机问题

Xml 如何在flash cs3中设置随机问题,xml,actionscript-3,flash-cs5,Xml,Actionscript 3,Flash Cs5,我用FlashCS5创建了一个选择题类型的游戏。我创建的程序正在运行,但它没有显示我期望它发生的事情 我遇到了一些错误(代码中并不是真正的错误)。其中一些所谓的错误是: 你看,我希望从xml文件中随机提问,我知道必须使用的代码是var random=Math.ceil(Math.random()*30)其中,它应该仅从xml中的问题中随机抽取1个数字,总共30个。我不知道应该在哪里或如何插入代码 在游戏中,玩家必须正确回答问题,如果答案正确,则应进入记分板。否则应显示下一个问题并计算错误答案。

我用FlashCS5创建了一个选择题类型的游戏。我创建的程序正在运行,但它没有显示我期望它发生的事情


我遇到了一些错误(代码中并不是真正的错误)。其中一些所谓的错误是:

  • 你看,我希望从xml文件中随机提问,我知道必须使用的代码是
    var random=Math.ceil(Math.random()*30)其中,它应该仅从xml中的问题中随机抽取1个数字,总共30个。我不知道应该在哪里或如何插入代码

  • 在游戏中,玩家必须正确回答问题,如果答案正确,则应进入记分板。否则应显示下一个问题并计算错误答案。每一个错误答案将扣除5%的总分数。但问题是,不管它给出的答案是正确的还是错误的,它仍然不会出现在记分板上

  • 我还没有插入游戏所必需的计时器。我仍在试图找出如何做到这一点,因为计时器将显示在分数扣除。这里有这样一个想法:例如,在每一场游戏遭遇(或战斗)中,玩家将获得一定的时间(比如20秒),玩家必须在时间限制内正确回答问题。如果玩家回答正确,则应进入下一帧(显示分数),否则将扣除总分数的5%

  • 我想我可以处理计时器,但我真的需要你的帮助在前2,我的合作伙伴仍然是非常新的闪存。我们已经花了很多时间调试代码,但无法找到问题的解决方案。提前感谢那些愿意帮忙的人

    下面是程序中的一些代码(实际上是主代码)

    函数QuizItem(问题) { 这个问题=问题; this.answers=新数组(); 这个.numOfAnswers=0; 这个.correctAnswer=0; this.getQuestion=function() { 回答这个问题; } this.addAnswer=函数(answer,isCorrectAnswer) { this.answers[this.numOfAnswers]=答案; 如果(是正确答案) this.correctAnswer=this.numOfAnswers; 这个.numOfAnswers++; }

    this.getAnswer=函数(answerNumberToGet)
    {
    返回此。回答[answerNumberToGet];
    }
    this.getCorrectAnswerNumber=函数()
    {
    返回此。正确答案;
    }
    this.checkAnswerNumber=函数(userAnswerNumber)
    {
    如果(userAnswerNumber==this.getCorrectAnswerNumber())
    gotoAndPlay(“正确”);
    其他的
    gotoAndPlay(“错误”);
    }
    this.getNumOfAnswers=函数()
    {
    返回此.answers.length;
    }
    }
    函数onQuizData(成功)
    {
    var quizNode=this.firstChild;
    var quizTitleNode=quizNode.firstChild;
    title=quizTitleNode.firstChild.nodeValue;
    var i=0;
    //跟随
    var itemsNode=quizNode.childNodes[1];
    while(itemsNode.childNodes[i])
    {
    var itemNode=itemsNode.childNodes[i];
    //由和一个或多个组成
    //始终位于s之前(的节点0)
    var questionNode=itemNode.childNodes[0];
    quizItems[i]=新的QuizItem(questionNode.firstChild.nodeValue);
    var a=1;
    //跟随
    var answerNode=itemNode.childNodes[a++];
    while(应答节点)
    {
    var isCorrectAnswer=false;
    if(answerNode.attributes.correct==“y”)
    isCorrectAnswer=true;
    quizItems[i].addAnswer(answerNode.firstChild.nodeValue,isCorrectAnswer);
    //转到下一个
    answerNode=itemNode.childNodes[a++];
    }
    i++;
    }
    gotoAndPlay(“开始”);
    }
    var quizItems=新数组();
    var myData=newxml();
    myData.ignoreWhite=true;
    myData.onLoad=onQuizData;
    load(“quiz1.xml”);
    停止();
    
    这里有很多问题。我仅介绍如何加载测验XML以及显示问题列表中随机项目的一般过程:

    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    
    var quizItems:Array;
    var quizData:XML;
    
    var xmlLoader:URLLoader = new URLLoader();
    xmlLoader.addEventListener(Event.COMPLETE, onDataComplete);
    xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onDataError);
    xmlLoader.load(new URLRequest("INSERT XML URL HERE"));
    
    function onDataComplete(evt:Event):void
    {
        quizData = new XML(xmlLoader.data);
        var quizList:XMLList = quizData..item;
    
        createItems();
    
        showQuestion();
    }
    
    function createItems():void
    {
        quizItems = new Array();
    
        // Grab each <item> node from the xml and stick it in an array.
        for each(var item:XML in quizList) quizItems.push(item);    
    }
    
    function showQuestion():void
    {
        // TODO: Remove any previous question/answer items.
    
        // Double-check that the quizItems array is not at length 0, which means it should be repopulated.
        if (quizItems.length == 0) createItems();
    
        // Pick a random index based on the length of the quizItems array (which will shrink over time).
        var index:uint = Math.floor(Math.random() * quizItems.length);
    
        // Remove the item from the array and store it in a variable (so the item cannot be randomly chosen twice).
        var quizItemData:XML = quizItems.splice(index, 1)[0];
    
        // Grab the <question> node. 
        var questionNode:XML = quizItemData.question[0];
        // TODO: Take some action with the <question> data, such as assigning it to a text field.
        // Ex - myQuestionField.text = questionNode.toString();
    
        // Grab all the <answer> nodes as an XML list.
        var answerList:XMLList = quizItemData.answer;
        for each (var answerNode:XML in answerList) {
            // TODO: Take some action with each of the <answer> nodes.
            // Ex - myAnswerButton.labelText = answerNode.toString();
            // Ex - myAnswerButton.isCorrectAnswer = (answerNode.@correct == "y");
            // TODO: Position each answer item.
        }
    
        // TODO: Any remaining display tasks such as intro animation, etc.
    }
    
    function onDataError(evt:IOErrorEvent):void
    {
        trace("ERROR: " + evt.text);
    }
    
    导入flash.events.Event;
    导入flash.events.IOErrorEvent;
    导入flash.net.urloader;
    导入flash.net.URLRequest;
    var-quizItems:数组;
    var-quizData:XML;
    var xmlLoader:URLLoader=新的URLLoader();
    addEventListener(Event.COMPLETE、onDataComplete);
    addEventListener(IOErrorEvent.IO_ERROR,onDataError);
    load(新的URL请求(“在此处插入XML URL”);
    函数onDataComplete(evt:事件):无效
    {
    quizData=新的XML(xmloader.data);
    var quizList:XMLList=quizData..item;
    createItems();
    showQuestion();
    }
    函数createItems():void
    {
    quizItems=新数组();
    //从xml中抓取每个节点并将其粘贴到一个数组中。
    对于每个(变量项:quizList中的XML)quizItems.push(项);
    }
    函数showQuestion():void
    {
    //TODO:删除以前的所有问题/答案项。
    //仔细检查quizItems数组的长度是否不是0,这意味着应该重新填充它。
    如果(quizItems.length==0)createItems();
    //根据quizItems数组的长度选择一个随机索引(该数组将随着时间而收缩)。
    变量索引:uint=Math.floor(Math.random()*quizItems.length);
    //从数组中删除该项并将其存储在变量中(因此该项不能随机选择两次)。
    var quizItemData:XML=quizItems.splice(索引,1)[0];
    //抓住节点。
    var questionNode:XML=quizItemData.question[0];
    //TODO:对数据执行一些操作,例如将其指定给文本字段。
    //Ex-myQuestionField.text=questionNode.toString();
    //将所有节点作为XML列表抓取。
    var answerList:XMLList=quizItemData.answer;
    对于每个(var应答节点:应答列表中的XML){
    //TODO:对每个节点执行一些操作。
    //Ex-myAnswerButton.labelText=answerNode.toString();
    //Ex-myAnswerButton.isCorrectAnswer=(answerNode.@correct==“y”);
    //TODO:定位每个答案项目。
    }
    //TODO:任何剩余的显示任务
    
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    
    var quizItems:Array;
    var quizData:XML;
    
    var xmlLoader:URLLoader = new URLLoader();
    xmlLoader.addEventListener(Event.COMPLETE, onDataComplete);
    xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onDataError);
    xmlLoader.load(new URLRequest("INSERT XML URL HERE"));
    
    function onDataComplete(evt:Event):void
    {
        quizData = new XML(xmlLoader.data);
        var quizList:XMLList = quizData..item;
    
        createItems();
    
        showQuestion();
    }
    
    function createItems():void
    {
        quizItems = new Array();
    
        // Grab each <item> node from the xml and stick it in an array.
        for each(var item:XML in quizList) quizItems.push(item);    
    }
    
    function showQuestion():void
    {
        // TODO: Remove any previous question/answer items.
    
        // Double-check that the quizItems array is not at length 0, which means it should be repopulated.
        if (quizItems.length == 0) createItems();
    
        // Pick a random index based on the length of the quizItems array (which will shrink over time).
        var index:uint = Math.floor(Math.random() * quizItems.length);
    
        // Remove the item from the array and store it in a variable (so the item cannot be randomly chosen twice).
        var quizItemData:XML = quizItems.splice(index, 1)[0];
    
        // Grab the <question> node. 
        var questionNode:XML = quizItemData.question[0];
        // TODO: Take some action with the <question> data, such as assigning it to a text field.
        // Ex - myQuestionField.text = questionNode.toString();
    
        // Grab all the <answer> nodes as an XML list.
        var answerList:XMLList = quizItemData.answer;
        for each (var answerNode:XML in answerList) {
            // TODO: Take some action with each of the <answer> nodes.
            // Ex - myAnswerButton.labelText = answerNode.toString();
            // Ex - myAnswerButton.isCorrectAnswer = (answerNode.@correct == "y");
            // TODO: Position each answer item.
        }
    
        // TODO: Any remaining display tasks such as intro animation, etc.
    }
    
    function onDataError(evt:IOErrorEvent):void
    {
        trace("ERROR: " + evt.text);
    }