我正在进行Flash测验,我从PHP中提取数据,以用作游戏中的问题和答案。一切都进口得很好,但我在确定正确的答案时遇到了问题。测验是多项选择,4个可能的答案。当您单击按钮时,它将激活我的功能 -
button1.addEventListener(MouseEvent.CLICK,returnAnswerOne);
function returnAnswerOne(event:Event){
answeredQuestion()
}
这很好用。它激活以下功能 -
function answeredQuestion() {
if(correctoneArray[numLoops] == 1){
trace(correctoneArray[numLoops]);
trace("right answer");
gotoAndStop(4);
} else {
trace(correctoneArray[numLoops]);
trace("wrong answer");
gotoAndStop(5);
}
我的闪光灯知道答案是否正确的方式是看到数字'1'存在。我正确答案的PHP输出如下所示
&correctone=0/0/0/0/0/0/0/0 &correcttwo=0/1/0/0/1/0/1/0 &correctthree=1/0/1/0/0/0/0/1 &correctfour=0/0/0/1/0/1/0/0
这是我用来导入这些数组的方法 -
var loader3:URLLoader = new URLLoader();
loader3.addEventListener(Event.COMPLETE, completeHandler2);
loader3.dataFormat = URLLoaderDataFormat.VARIABLES;
loader3.load(request);
function completeHandler2(event:Event) :void{
var correctone:String = event.target.data.correctone;
var correctoneArray:Array=correctone.split("/")
trace("Correctone Loaded");
试图避免垃圾邮件发送我的整个脚本,所以想象一下这些函数中有4个,每个都检查'1'。第5帧是你被告知问题是错误的地方,第4帧是你被告知问题是对的。上面发布的所有脚本都在第3帧发布。
所以深呼吸我的问题是,这一切都适用于第一个问题,但是当我继续问题2时,所有答案都是错误的,当你点击它们时,这在整个测验中都会继续。有人知道会出现什么问题吗?我的跟踪显示在问题1之后,所有按钮都产生值0。
如果您需要任何其他信息,请告诉我,这个让我难过......
提前致谢!
答案 0 :(得分:1)
如果没有看到所有内容,很难确切地知道出了什么问题。我建议你整理一些东西。首先,利用您可以按名称引用变量的事实,以避免重复数组解析和按钮处理程序的所有代码。其次,请确保您只在一个地方增加您的问题编号。第三,使用更有意义的变量名称。
总之,这应该让你前进:
注意:
// ----------------------------- FRAME 1 -----------------------------//
// Declare answers array and questionNumber counter
var answers:Array = [];
var questionNumber:int = 0;
// ----------------------------- FRAME 3 -----------------------------//
// Just load the answers and hook up the event handlers
// -------------------------------------------------------------------//
// Load the answers
var answerKeyLoader:URLLoader = new URLLoader();
answerKeyLoader.addEventListener(Event.COMPLETE, answerKeyCompleteHandler);
answerKeyLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
answerKeyLoader.load(request);
function answerKeyCompleteHandler(event:Event):void {
var numberNames:Object = { one:1, two:2, three:3, four:4 };
for(var nName:* in numberNames) {
var index:int = numberNames[nName];
var answerString:String = e.target.data["correct" + nName];
answers[index] = answerString.split("/");
}
}
// Attach button handlers (all buttons can use the same handler)
for(var i:uint = 1; i < 5; i++) {
var button:DisplayObject = this["button" + i.toString()];
button.addEventListener(MouseEvent.CLICK, onClickAnswerButton);
}
function onClickAnswerButton(e:MouseEvent):void {
var buttonName:String = DisplayObject(e.currentTarget).name;
var buttonNumber:int = int(buttonName.substring(6,1));
var correct:Boolean = answers[buttonNumber][questionNumber] == 1;
// Double check:
trace("buttonName =", buttonName, ", buttonNumber =",buttonNumber,
", questionNumber =", questionNumber, ", correct =", correct);
// Increment questionNumber here and nowhere else
questionNumber++;
if(correct) {
trace("right answer");
gotoAndStop(5);
} else{
trace("wrong answer");
gotoAndStop(6);
}
}
// ----------------------------- FRAME 4 -----------------------------//
// Just show the new question
// -------------------------------------------------------------------//
someLabel.text = questions[questionNumber];
stop();
// ----------------------------- FRAME 5 -----------------------------//
someButton.addEventListener(MouseEvent.CLICK, onClickButton);
function onClickButton(e:MouseEvent):void {
someButton.removeEventListener(MouseEvent.CLICK, onClickButton);
goToAndPlay(4);
}
// ----------------------------- FRAME 6 -----------------------------//
someButton.addEventListener(MouseEvent.CLICK, onClickButton);
function onClickButton(e:MouseEvent):void {
someButton.removeEventListener(MouseEvent.CLICK, onClickButton);
goToAndPlay(4);
}