By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,213 Members | 1,117 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,213 IT Pros & Developers. It's quick & easy.

Flash 8 Quiz Guru Needed: Make link appear for next test only if test taker passes.

P: 2
Greeings, all,

Flash 8 has quiz templates which are coded for multiple choice, true/false, text statement, and matching types of questions, along with hotspots and probably anoher type I am forgetting. The test taker makes their selection(s) or answers, and clicks a "check answer" button. They then get a feedback statements depending on whether they have answered correctly or not. Many questions involve multiple selections to be correct, but all must click on the "check answer" button to advance to the next question.

The point is that all of this functionality is coded in the component(s) which make the template so versatile. A copy of my .fla shouldn't actually be needed (I am guessing here), because the component code is what I believe needs tweaking, at least the part where the final percentage of correct answers is calculated at the end of the test, and that percentage is compared to a user-defined passing percentage score.

I think this requires a Flash Quiz Guru, who knows just how to connect the pass or fail result to a new button or a "go to" redirect. I don't know whether the same effect could be accomplished by frame scripting, but I expect tweaking the component(s) code would seem a more direct approach.

I cannot fill in the blanks for any idea that is just an idea. If anyone can code this, make it work and test it, and direct me to where the snippets must be placed, I would be deeply grateful. This is about education, not a game or commercial razz-ma-tazz.

Are there any Flash Quiz Guru's who can help me out with this?

Thank you.

regards,

stevenjs
____________________________________
"I am but an egg."
--Stranger in a Strange Land
Apr 18 '07 #1
Share this Question
Share on Google+
1 Reply


P: 2
Hello again,

Here's a copy of the Flash 8 Quiz Component called "QuizGlobalClass" in the template library, prior to any of the quiz parameters being set in the component interface (hence some items are "undefined" :

**************************

#initclip 1

/*--------------VERSION CONTROL INFORMATION----------------------

Quiz Template Global Toolbox Class
Developed by Dan Carr
Quality Assurance by Andrew Chemey
Last Modified for Flash 2004: July 6, 2003
Copyright 2003 Macromedia Inc. All rights reserved.

------------------END VERSION CONTROL--------------------------
*/


// SECTION 1: BUILD THE QUIZ CLASS FOR EVENT HANDLING

// 1-1: Set the contructor function for the Quiz Class

_global.Quiz = function (){

this.total_correct = 0;
this.total_wrong = 0;
this.percent_correct = 0;
this.percent_display = undefined;

this.quest_to_ask = 0;
this.randomize = undefined;
this.login_file = undefined;
this.activity_ID = undefined;
this.activity_name = undefined;
this.results_page = undefined;

this.level = undefined;

this.Quest_Frames = new Array();
this.quest_num = 0;
this.page_num = undefined;
this.endFlag = false;
}

_global.Quiz.prototype = new Object();

Object.registerClass("QuizSuperClass",Quiz);

// 1-2: Initialize Quiz tracking session

Quiz.prototype.initStartQuiz = function (){

this.start_time = Math.round(getTimer()/1000);
var start_param = this.login_file+";"+this.activity_ID+";"+this.acti vity_name;

fscommand("CMIInitialize" ;
fscommand("MM_cmiSetLessonStatus", "i" ;
fscommand("MM_StartSession", start_param);
}


// 1-3: Initialize a new quiz page

Quiz.prototype.initNewPage = function(num){

fscommand("CMISetLocation", num);
}


// 1-4: Conclude the Quiz session and submit score

Quiz.prototype.initSubmitScore = function(){

this.stop_time = Math.round(getTimer()/1000);
this.elapsed_time = this.getLatency(this.stop_time - this.start_time);
this.percent_correct = Math.round(this.total_correct/(this.total_correct+this.total_wrong)*100);

fscommand("MM_cmiSetLessonStatus", "c" ;
fscommand("CMISetTime", this.elapsed_time);
fscommand("CMISetScore", this.percent_correct);
fscommand("CMIFinish" ;
fscommand("CMIExitAU" ;
}


// 1-5: Format Latency for correct tracking

Quiz.prototype.getLatency = function (timeInSec){

var l_seconds, l_minutes, l_hours, timeInHours;

if (timeInSec <= 9) {
l_seconds = "0"+timeInSec;
l_minutes = "00";
l_hours = "00";
} else {
l_seconds = timeInSec;
l_minutes = "00";
l_hours = "00";
}
if (l_seconds > 59) {
l_minutes = int(l_seconds / 60);
l_minutes = this.formatNum(l_minutes);
l_seconds = l_seconds - (l_minutes * 60);
l_seconds = this.formatNum(l_seconds);
l_hours = "00";
}
if (l_minutes > 59) {
l_hours = int(l_minutes/ 60);
l_hours = this.formatNum(l_hours);
l_minutes = l_minutes - (l_hours * 60);
l_minutes = this.formatNum(l_minutes);
}
timeInHours = l_hours+":"+l_minutes+":"+l_seconds;
return timeInHours;
}


// 1-6: Return formatted number - convert from single digit to double digit

Quiz.prototype.formatNum = function (num) {

if (num <= 9) {
num = "0"+num;
}
return num;
}


// 1-7: Set the pooling number and build an array of page numbers

Quiz.prototype.setQuestArray = function(){

this.pooling_array = new Array();
this.start_page;
this.end_page;

for (var i = 0; i < _root._totalframes; i++) {
this.pooling_array = i+1;
}
this.start_page = this.pooling_array.shift();
this.end_page = this.pooling_array.pop();

if (this.randomize == true) {
this.setRandomArray(this.pooling_array);
}

if (this.quest_to_ask > this.pooling_array.length || this.quest_to_ask < 1) {
this.quest_to_ask = this.pooling_array.length;
} else {
this.quest_to_ask = int(this.quest_to_ask);
}

for (var i = 0; i < this.quest_to_ask; i++) {
this.Quest_Frames = this.pooling_array;
}
}


// 1-8: Randomize the array of page numbers if requested

Quiz.prototype.setRandomArray = function(array){

for (var i=0 ; i < array.length; i++) {
newLoc = Math.round(Math.random() * (array.length-1));
currLoc = array;
array = array[newLoc];
array[newLoc] = currLoc;
}
}


// 1-9: Set the navigation to the next page in the array

Quiz.prototype.setNewPage = function() {

if (this.endFlag == false){

this.page_num = this.Quest_Frames[this.quest_num];
this.quest_num++;

this.initNewPage(this.page_num);
_root.gotoAndStop(this.page_num);

} else if (this.endFlag == true) {
this.percent_format = this.percent_correct+"%";
_root.gotoAndStop(_root._totalframes);
}
}


// 1-10: Catch the result variables from the interactions

Quiz.prototype.countScore = function (weightNum){

if (weightNum < 0) {
this.total_wrong += Math.abs(weightNum);
} else {
this.total_correct += Number(weightNum);
}

this.quest_to_ask--;

if(this.quest_to_ask > 0){
_root.nav.nextBtn.gotoAndStop(1);

} else if (this.quest_to_ask == 0) {
this.initSubmitScore();
this.endFlag = true;

if(this.results_page == true){
_root.nav.nextBtn.gotoAndStop(1);
} else {
_root.nav.nextBtn.gotoAndStop(2);
}
}
}

#endinitclip 1
*************************************

Although I am guessing, it seems what's needed is a conditional statement, perhaps using "this.percent_display = undefined;" (once defined). When the percentage of correct answers is at or greater than a given passing grade percentage, the test taker is redirected to a more advanced quiz. When the percentage of correct answers is lower than passing, the test taker is invited to retake the test.

Please, anyone?

regards,

stevenjs
__________________________
--Stranger in a Strange Land
Apr 18 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.