2013-04-10 4 views
0

퀴즈 스타일의 FlashCS4 응용 프로그램을 만들고 있습니다. 질문은 별도의 텍스트 파일에 저장되며 as3을 통해 프로그램에 호출됩니다. 이 모든 것은 잘 작동하지만이 데이터를 무작위로 추출하는 방법은 궁금하지만 같은 질문을 두 번 풀지 않는 것이 좋습니다.as3의 호출 된 변수 순서 랜덤 화

예를 들어 질문 페이지로 이동하는 순간 나는 질문의 각 부분을 표시 할 수 있습니다 (대답 a, b, c, d + 질문 자체). 그러면 10 회까지 진행할 수 있습니다.

나는이 10 가지 질문을 텍스트 파일에있는 (27 건) 질문에서 무작위로 생성하려고합니다.

import flash.geom.Transform; 
    import flash.geom.ColorTransform; 
    import fl.motion.Color; 


var glowFilter:GlowFilter = new GlowFilter(0x000000, 1, 2, 2, 10, 3) 
var questionNumber:int = 0; 
var totalCorrect:int = 0; 
var selectedAnswer:String; 
var checkAnswer:String; 
var correctAnswer:String; 
var questionCount:int = 0; 
var numberOfQuestions:int = 10; 
txt_loggedin_Question.text = (userName); 

//Displays the Question Number which is called in from XML 
txt_QuestionNumber.text = ("Question #"+questions[questionNumber].ref +" of"+numberOfQuestions); 

function CheckAnswer() { 
if (selectedAnswer == correctAnswer){ 
    totalCorrect = totalCorrect + 1; 
    trace("Correct"); 
}else{ 
     totalCorrect = totalCorrect; 
     trace("incorrect"); 
    } 

      questionNumber = questionNumber + 1;  
      questionCount = questionCount + 1; 


    //Random questions set up new variable questioncount 
    if (questionCount == numberOfQuestions){ 
     trace("we are at 10"); 
     gotoAndStop (1, "Result"); 
     //STOP RUN NEXT SCENE 
    }else{ 
     setUpQuestions() 
    } 

가없는 코드의 공정한 조금이지만, 나는이 파일을 별도의 페이지에서 호출, 필수 요소를 포함 바라고,

var questions:Array = [ ]; 

var request:URLRequest = new URLRequest("1.txt"); 
var loader:URLLoader = new URLLoader(request); 

loader.addEventListener(Event.COMPLETE, completeHandler); 

function completeHandler(event:Event):void 
{ 
// loader data - the questions.txt file 
var data:String = event.target.data; 
// split data by newline for each question 
var lines:Array = data.split("\n"); 

// for every line 
for each (var line:String in lines) 
{ 
    // split line by "||" delimiter 
    var question:Array = line.split("||"); 

    // add the question to the questions array: 
    questions.push({ref: question[0], 
        question: question[1], 
        answerA: question[2], 
        answerB: question[3], 
        answerC: question[4], 
        answerD: question[5], 
        answerE: question[6], 
        correct: question[7], 
        answer: question[8], 
        type: question[9], 
        file: question[10]}); 
} 

} 

이 모든 작동하지만 유일한 것은 나는 씬이로드 될 때마다 텍스트 파일 내에서 무작위로 질문을 생성하는 것으로 고심하고있다. 길게 바람이 불고있는 질문에 유감스럽게 생각합니다.

읽어 주셔서 감사합니다.

답변

0

여기에 당신이해야 할 단계는 다음과 같습니다

"orderedQuestions"라는 배열과 같은 질문의 목록을 가져옵니다.

"shuffledQuestions"라는 두 번째 빈 배열을 만듭니다.

루프 동안 만들기 :

while(orderedQuestions.length > 0){ 
    shuffledQuestions.push(orderedQuestions.splice(Math.floor(Math.random()*orderedQuestions.length),1)); 
} 

루프는 정렬 된 목록에서 무작위로 하나 개의 질문을 제거하고 단행 목록에 추가합니다. 완료되면 정렬 된 목록이 비어 있고 shuffledQuestions에 모든 질문이 임의의 순서로 추가됩니다.

+0

성형 외과 의사 감사합니다. – user2221709

+0

당신은 천만에요. 다행히 도움이되었습니다. 질문에 답변 한 것으로 생각되면이 대답에 동의 함을 클릭 할 수 있습니까? –

+0

예. 죄송합니다. 일부 디자인 문제를 해결할뿐입니다. 구현 한 후에는 눈금을 클릭합니다. 괜찮 으면, 다시 한번 감사드립니다. – user2221709