2011-10-18 48 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); 
} 
相关问题