Flash重置阵列值

时间:2015-08-21 01:45:55

标签: arrays actionscript-3 flash

我正在研究一个测试项目,后来我将其纳入一个更大的工作,这是一个简单的问答游戏。我用我的问题做了一个数组:

var questions1:Array=["nitrogen dioxide","sulfur hexafluoride",..."]

在第二层我制作了一个随机循环问题的按钮。

import flash.events.MouseEvent;

var qno=0;var rnd1;
function change_question(){
rnd1=Math.ceil(Math.random()*questions1.length)-1;
q.text=questions1[rnd1];
if(questions1[rnd1]=="X"){change_question();}
questions1[rnd1]="X";
}
change_question();

next_b.addEventListener(MouseEvent.CLICK, ButtonAction1);
function ButtonAction1(eventObject:MouseEvent){
qno++;change_question();

}

这部分很有用,因为我正在学习一个教程。文本显示在我创建的动态文本框中。本教程教导每次选择时将数组的值更改为X,并在每次遇到X时忽略选择不同的问题

在循环遍历所有问题后,我基本上在flash的输出部分得到一个无限循环,因为它找不到更多的非X值。我希望有人有关于如何按下按钮的信息,将阵列更改回默认设置,以便教师(因为这是它的用途)有一种方法可以在文件到达测验结束时重置文件

谢谢大家!

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望随机化您的问题,并在显示您想要重置问题的所有问题之后。

根据您的代码,您会得到一个随机问题,并通过推送值'X'来更新相同的数组。而不是这样做你需要做的是保持数组只随机化它的位置。这样,一旦涵盖了所有问题,就可以使用相同的值

我在这里添加了代码。

import flash.events.MouseEvent;

var qno=0;var rnd1;
var questions1:Array=["nitrogen dioxide","sulfur hexafluoride","carbon dioxide","carbon monooxide"];
var nAttmeptedCount = 0;
var shuffledLetters:Array;
function change_question()
{
    if(qno == questions1.length)
    {
        qno = 0;
        resetQuestion()
    }
    else
    {
        q.text = questions1[shuffledLetters[qno]];
        qno++;      
    }
}

function resetQuestion()
{

    shuffledLetters = new Array(questions1.length);
    for(var i=0;i<shuffledLetters.length;i++)
    {
        shuffledLetters[i] = i;
    }

    shuffledLetters.sort(randomize);
}

function randomize ( a : *, b : * ) : int {
    return ( Math.random() > .5 ) ? 1 : -1;
}


resetQuestion()
change_question();

next_b.addEventListener(MouseEvent.CLICK, ButtonAction1);
function ButtonAction1(eventObject:MouseEvent){
change_question();

}

在显示所有问题后的上述解决方案中,我自动重置了问题。您可以根据您的要求修改代码。如果您想执行重置问题,可以在按钮单击时为您添加代码qno = 0;resetQuestion()

希望以上解决方案适合您。