Hi All,
I am posting a assessment template use for an eLearning Course. Please check that out and let me know if anyone have better suggestion in same format.
Note :- I had created this using Action Script 1.0 and Flash Player 6.
CODE
Code for XML :-
<data>
<title><![CDATA[<b>Match The Pairs</b>]]></title>
<question><![CDATA[Match each step of the code change process with its order of occurrence.]]></question>
<instruction><![CDATA[<font color="#990000">Match each step description given below with its appropriate step number. Click <b>Check My Answer</b> when you are done.</font>]]></instruction>
<column_titles>
<title><![CDATA[<b>Step Description</b>]]></title>
<right_title><![CDATA[<b>Step Number</b>]]></right_title>
</column_titles>
<left_column_content>
<text value="7" color="0x009900"><![CDATA[STEP 1]]></text>
<text value="5" color="0x663300"><![CDATA[STEP 2]]></text>
<text value="8" color="0x996699"><![CDATA[STEP 3]]></text>
<text value="6" color="0xFF6600"><![CDATA[STEP 4]]></text>
<text value="4" color="0x0066ff"><![CDATA[STEP 5]]></text>
<text value="2" color="0x0000ff"><![CDATA[STEP 6]]></text>
<text value="3" color="0x990000"><![CDATA[STEP 7]]></text>
<text value="1" color="0x006600"><![CDATA[STEP 8]]></text>
</left_column_content>
<right_column_content>
<text value="1"><![CDATA[Step 1]]></text>
<text value="2"><![CDATA[Step 2]]></text>
<text value="3"><![CDATA[Step 3]]></text>
<text value="4"><![CDATA[Step 4]]></text>
<text value="5"><![CDATA[Step 5]]></text>
<text value="6"><![CDATA[Step 6]]></text>
<text value="7"><![CDATA[Step 7]]></text>
<text value="8"><![CDATA[Step 8]]></text>
</right_column_content>
<feedback>
<correct_feed><![CDATA[<b>Correct</b>.<br><br>All your answers are correct.]]></correct_feed>
<incorrect_feed><![CDATA[<B>Incorrect</B>.<br><br>One or more of your answers are incorrect. Click Solution to view the answers.]]></incorrect_feed>
</feedback>
</data>
Code in Flash File
1) XML Parsing :-
stop();
this._visible = false;
xmlObject = new XML();
xmlObject.ignoreWhite = true;
xmlObject.onLoad = fn_ParseData;
xmlObject.load("MTF.xml");
var pageTitle,correctFeed,incorrectFeed;
var leftContent = new Array();
var rightContent = new Array();
function fn_ParseData() {
var firstcld = xmlObject.firstChild;
fn_parse(firstcld);
}
function fn_parse(level2)
{
for(var i=0;i<level2.childNodes.length;i++)
{
if(level2.childNodes[i].nodeName == "title")
{
var level3 =level2.childNodes[i];
pageTitle = level3.childNodes[0].nodeValue;
}
else if(level2.childNodes[i].nodeName == "instruction")
{
var level3 =level2.childNodes[i];
dtxt_instruction.htmlText = level3.childNodes[0].nodeValue;
}
else if(level2.childNodes[i].nodeName == "question")
{
var level3 =level2.childNodes[i];
Question_txt.htmlText = level3.childNodes[0].nodeValue;
}
else if(level2.childNodes[i].nodeName == "left_column_content")
{
var level3 =level2.childNodes[i];
for(var j=0;j<level3.childNodes.length;j++)
{
leftContent[j] = new Object();
leftContent[j].value = level3.childNodes[j].attributes.value;
leftContent[j].color = level3.childNodes[j].attributes.color;
leftContent[j].text = level3.childNodes[j].childNodes[0].nodeValue;
}
}
else if(level2.childNodes[i].nodeName == "right_column_content")
{
var level3 =level2.childNodes[i];
for(var j=0;j<level3.childNodes.length;j++)
{
rightContent[j] = new Object();
rightContent[j].value = level3.childNodes[j].attributes.value;
rightContent[j].text = level3.childNodes[j].childNodes[0].nodeValue;
}
}
else if(level2.childNodes[i].nodeName == "column_titles")
{
dtxt_leftTitle.htmlText = level2.childNodes[i].childNodes[0].childNodes[0].nodeValue;
dtxt_rightTitle.htmlText = level2.childNodes[i].childNodes[1].childNodes[0].nodeValue;
}
else if(level2.childNodes[i].nodeName == "feedback")
{
correctFeed = level2.childNodes[i].childNodes[0].childNodes[0].nodeValue;
incorrectFeed = level2.childNodes[i].childNodes[1].childNodes[0].nodeValue;
}
}
dtxt_instruction.autoSize = true;
dtxt_instruction._y = Question_txt._y + Question_txt._height + 5;
mc_background._y = dtxt_instruction._y -2;
mc_background._x = dtxt_instruction._x -2;
mc_background._height = dtxt_instruction._height +2;
dtxt_leftTitle._y = mc_background._y + mc_background._height+15;
dtxt_rightTitle._y = dtxt_leftTitle._y;
play();
}
2) Functional Code :-
var lastLeftSelected = undefined, lastRightSelected = undefined;
var enableRight = false;
function fn_initialize() {
var y_start = dtxt_leftTitle._y+dtxt_leftTitle._height + 5;
var toAdd = y_start;
var Gap = 5;
for (var i = 0; i<leftContent.length; i++) {
var tempStr = "mc_leftColumn"+i;
mc_leftColumn.duplicateMovieClip(tempStr, 500+i);
var tempMc = eval(tempStr);
tempMc.number = leftContent[i].value;
tempMc.color = leftContent[i].color;
tempMc.refOfRightContent = null;
tempMc._x = 49;
tempMc._y = toAdd;
tempMc.dtxt.autoSize = true;
tempMc.dtxt.text = leftContent[i].text;
toAdd = (tempMc._y+tempMc._height+Gap);
tempMc.mc_radio.mc_dot._visible = false;
tempMc.btn.onPress = fn_leftColumnSelected;
createEmptyMovieClip("Scene"+i, 700+i);
tempMc.scene = eval("Scene"+i);
}
var y_start = dtxt_leftTitle._y+25;
var toAdd = y_start;
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_rightColumn"+i;
mc_rightColumn.duplicateMovieClip(tempStr, 600+i);
var tempMc = eval(tempStr);
tempMc._x = 500;
tempMc._y = toAdd;
tempMc.dtxt.autoSize = true;
tempMc.dtxt.text = rightContent[i].text;
toAdd = (tempMc._y+tempMc._height+5);
tempMc.number = rightContent[i].value;
tempMc.mc_radio.mc_dot._visible = false;
//tempMc.btn.onPress = fn_rightColumnSelected;
tempMc.btn.enabled = false;
tempMc.refOfLeftContent = null;
}
createEmptyMovieClip("forSwapDepths", 850);
mcFeedback.swapDepths(forSwapDepths);
done_reset._y = toAdd-5;
done_reset._x = 760;
}
function fn_leftColumnSelected() {
lastLeftSelected.mc_radio.mc_dot._visible = false;
var parent = this._parent;
parent.mc_radio.mc_dot._visible = true;
lastLeftSelected = parent;
if (enableRight == false) {
enableRight = true;
fn_enableRightButtons();
}
if (lastLeftSelected.refOfRightContent == lastRightSelected) {
lastLeftSelected.scene._visible = false;
lastLeftSelected.refOfRightContent.refOfLeftContent = null;
lastLeftSelected.refOfRightContent = null;
}
fn_enableDisable();
}
function fn_rightColumnSelected() {
lastRightSelected.mc_radio.mc_dot._visible = false;
var parent = this._parent;
parent.mc_radio.mc_dot._visible = true;
lastRightSelected = parent;
if (lastRightSelected.refOfLeftContent == null) {
fn_drawLine();
lastRightSelected.refOfLeftContent = lastLeftSelected;
lastLeftSelected.refOfRightContent.refOfLeftContent = null;
lastLeftSelected.refOfRightContent = lastRightSelected;
} else if (lastRightSelected.refOfLeftContent == lastLeftSelected) {
lastRightSelected.refOfLeftContent.scene._visible = false;
lastRightSelected.refOfLeftContent.refOfRightContent = null;
lastRightSelected.refOfLeftContent = null;
trace("in this condition");
}
fn_enableDisable();
}
function fn_enableRightButtons() {
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_rightColumn"+i;
var tempMc = eval(tempStr);
tempMc.btn.enabled = true;
tempMc.btn.onPress = fn_rightColumnSelected;
}
}
function fn_validate() {
var allCorrect = true;
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_leftColumn"+i;
var tempMc = eval(tempStr);
if (tempMc.number == tempMc.refOfRightContent.number) {
tempMc.mc_radio.mc_remark.gotoAndStop("tick");
} else {
tempMc.mc_radio.mc_remark.gotoAndStop("cross");
allCorrect = false;
}
}
if (allCorrect == false) {
mcFeedback.gotoAndStop("lbl_solution");
mcFeedback.feedback_text.htmlText = incorrectFeed;
} else {
mcFeedback.gotoAndStop("lbl_close");
mcFeedback.feedback_text.htmlText = correctFeed;
}
fn_disableAllButton();
}
function fn_disableAllButton() {
done_reset.gotoAndStop(1);
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_rightColumn"+i;
var tempMc = eval(tempStr);
tempMc.btn.enabled = false;
}
for (var i = 0; i<leftContent.length; i++) {
var tempStr = "mc_leftColumn"+i;
var tempMc = eval(tempStr);
tempMc.btn.enabled = false;
}
}
function fn_drawLine() {
temp = lastLeftSelected.scene;
temp._visible = true;
var_color = lastLeftSelected.color;
temp.clear();
temp.beginFill(var_color, 100);
temp.lineStyle(0, var_color, 100);
var point = new Object();
point.x = lastLeftSelected.mc_radio.mc_dot._x;
point.y = lastLeftSelected.mc_radio.mc_dot._y;
lastLeftSelected.mc_radio.localToGlobal(point);
temp._x = 0;
//point.x;
temp._y = 0;
//point.y;
temp.moveTo(point.x, point.y);
point.x = lastRightSelected.mc_radio.mc_dot._x;
point.y = lastRightSelected.mc_radio.mc_dot._y;
lastRightSelected.mc_radio.localToGlobal(point);
temp.lineTo(point.x, point.y);
temp.lineTo(point.x, point.y+1);
point.x = lastLeftSelected.mc_radio.mc_dot._x;
point.y = lastLeftSelected.mc_radio.mc_dot._y;
lastLeftSelected.mc_radio.localToGlobal(point);
temp.lineTo(point.x, point.y+1);
temp.lineTo(point.x, point.y);
temp.endFill();
}
function fnShowAnswers() {
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_leftColumn"+i;
var tempMc = eval(tempStr);
tempMc.mc_radio.mc_remark.gotoAndStop(1);
lastLeftSelected = tempMc;
tempMc.number--;
lastRightSelected = eval("mc_rightColumn"+tempMc.number);
trace("lastLeftSelected "+lastLeftSelected);
fn_drawLine();
}
}
function fn_enableDisable() {
for (var i = 0; i<rightContent.length; i++) {
var tempStr = "mc_rightColumn"+i;
var tempMc = eval(tempStr);
trace("i = "+i+" "+tempMc.refOfLeftContent);
if (tempMc.refOfLeftContent == null) {
break;
}
}
if (i == rightContent.length) {
done_reset.gotoAndStop(2);
done_reset.btn_submit.onRelease = fn_validate;
} else {
done_reset.gotoAndStop(1);
}
}
fn_initialize();
this._visible = true;
Please find source file for above code here
Match.zip ( 499.14k )
Number of downloads: 80So, please go through this and let me know about the template. If anyone have new to share on this please reply back as it always good to learn new. I will be waiting for your response. Thanks in advance.