2011-10-18 47 views
0

隨機的問題,我已創建使用Flash CS5遊戲的多種選擇類型。我創建的程序正在運行,但並未顯示我期望它發生的事情。如何在Flash CS3


我遇到了一些錯誤(在代碼中並不是真正的錯誤)。一些所謂的錯誤是:

  1. 你看,我想有從XML文件中取出我的問題是隨機的,我知道必須使用的代碼是var random=Math.ceil(Math.random()*30);其中,應隨機1號僅從xml中的總共30個問題中獲得。我不知道在哪裏或如何插入代碼。

  2. 在遊戲

    ,玩家必須正確地回答這個問題,如果答案是正確的,應該繼續執行記分牌。否則它應該顯示下一個問題並計算錯誤的答案。每個錯誤的答案將被扣除總分。但問題是,是否顯示正確或錯誤的答案,它仍然不會去記分牌

  3. 我還沒有插入一個計時器,但對遊戲是必不可少的/需要的。即時通訊仍然試圖找出如何這樣做,因爲計時器會指示扣分。這裏是思想:例如,在每場比賽遇到(或戰鬥)的時間一定會提供給玩家(讓我們說20secs),玩家必須limit.if玩家回答它的時間內正確回答問題正確的,應該繼續執行下一幀(顯示分數)的總分其他5%將被扣除

我想我可以處理定時器,但我真的需要在第一2你的幫助,我的搭檔在閃光燈上還是很新的。我們花了很多時間調試代碼,但無法找到問題的解決方案。預先感謝那些願意幫助的人。

這裏是一些代碼的程序中的(實際上是主代碼)

功能QuizItem(問題) { this.question =問題; this.answers = new Array(); this.numOfAnswers = 0; this.correctAnswer = 0; this.getQuestion =函數() { 返回this.question; } this.addAnswer =函數(回答,isCorrectAnswer) { this.answers [this.numOfAnswers] =答案; 如果(isCorrectAnswer) this.correctAnswer = this.numOfAnswers; this.numOfAnswers ++; }

this.getAnswer=function(answerNumberToGet) 
{ 
    return this.answers[answerNumberToGet]; 
} 

this.getCorrectAnswerNumber=function() 
{ 
    return this.correctAnswer; 
} 

this.checkAnswerNumber=function(userAnswerNumber) 
{ 
    if (userAnswerNumber==this.getCorrectAnswerNumber()) 
     gotoAndPlay("Correct"); 
    else 
     gotoAndPlay("Wrong"); 
} 
this.getNumOfAnswers=function() 
{ 
    return this.answers.length; 
} 
} 

function onQuizData(success) 
{ 
var quizNode=this.firstChild; 
var quizTitleNode=quizNode.firstChild; 
title=quizTitleNode.firstChild.nodeValue; 

var i=0; 
// <items> follows <title> 
var itemsNode=quizNode.childNodes[1]; 
while (itemsNode.childNodes[i]) 
{ 
    var itemNode=itemsNode.childNodes[i]; 
    // <item> consists of <question> and one or more <answer> 
    // <question> always comes before <answer>s (node 0 of <item>) 
    var questionNode=itemNode.childNodes[0]; 
    quizItems[i]=new QuizItem(questionNode.firstChild.nodeValue); 
    var a=1;   
    // <answer> follows <question> 
    var answerNode=itemNode.childNodes[a++]; 
    while (answerNode) 
    { 
     var isCorrectAnswer=false; 
     if (answerNode.attributes.correct=="y") 
      isCorrectAnswer=true; 
     quizItems[i].addAnswer(answerNode.firstChild.nodeValue, isCorrectAnswer); 
     // goto the next <answer> 
     answerNode=itemNode.childNodes[a++]; 
    } 
    i++; 
} 
gotoAndPlay("Start"); 
} 

var quizItems=new Array(); 
var myData=new XML(); 
myData.ignoreWhite=true; 
myData.onLoad=onQuizData; 
myData.load("quiz1.xml"); 
stop(); 
+0

糾正我,如果我錯了,但你的代碼看起來像動作2 –

回答

0

你已經有很多問題在這裏了。我只打算解決你應該如何加載測驗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 = ([email protected] == "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); 
} 
相關問題