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