Skip to main content
Willy_2011
Participant
May 26, 2011
Question

Problem converting AS2 to AS3

  • May 26, 2011
  • 1 reply
  • 389 views


Hi All,

I have a multiple choice quiz FLA including an AS file, all written in AS2 and working well.  I have tried my best to "convert" them into AS3 but still encounter a lot of problem. Could you please take a look at my converted AS3 and let me know what went wrong? Thanks a lot!!!!

Also, could you let me know whether the forum even allow the attachment of FLA and AS files?

//My "Converted" AS file in AS3 ------------------------------------------------------------------------

import flash.geom.ColorTransform;

//as2 code: var _mc =  this;
var _mc:MovieClip = new MovieClip();
_mc = this;

var currentQuestion:Number = 0;
var depth:Number = 0;
var submitDisabled:Boolean = true;
var tries:Number = 1;

var answerRecord:Array = new Array();
var question_array:Array = new Array();
var userAnswers_array:Array = new Array();
specifcFeedback1.visible = false;
specifcFeedback2.visible = false;

function Question( correctAnswer, numDistractors, type ):void
{
      this.correctAnswer = correctAnswer;
      this.numDistractors = numDistractors;
      this.type = type;
}

function createQuestion():void
{
  tempNum2 = question_array[currentQuestion].numDistractors;

depth = 0;

userAnswers_array = [];

var tempNum:Number = question_array[currentQuestion].correctAnswer.length;

if ( tempNum > 1 )
{
  inst_txt = "Select all that apply and click <b>Submit</b>."
}
else
{
  inst_txt = "Select the correct answer and click <b>Submit</b>."
}

//as2 code: this.attachMovie( "submit_mc", "submit_mc", 102, {_x:882.0, _y:6.0} );
var submit_mc:MovieClip = new submit_mc();
submit_mc.x = 882.0;
submit_mc.y = 6.0;
addChild ( submit_mc );
}

function recordAnswers( userAnswers_array ):void
{
var answerRecord[currentQuestion]:Object = new Object();
answerRecord[currentQuestion].userAnswer = userAnswers_array;
createAnswerArrays();
submitAnswers();
}

function createAnswerArrays():void
{
var corrAnsTemp_array:Array = new Array( tempNum2 );
var userAnsTemp_array:Array = new Array( tempNum2 );

var corrLen:Number = question_array[currentQuestion].correctAnswer.length;
var userLen:Number = answerRecord[currentQuestion].userAnswer.length;
for( var i:int = 0; i<corrLen; i++ )
{
  corrAnsTemp_array[question_array[currentQuestion].correctAnswer] = question_array[currentQuestion].correctAnswer;
}

for( var i:int = 0; i<userLen; i++ )
{
  userAnsTemp_array[answerRecord[currentQuestion].userAnswer] = answerRecord[currentQuestion].userAnswer;
}
question_array[currentQuestion].correctAnswer = corrAnsTemp_array;
answerRecord[currentQuestion].userAnswer = userAnsTemp_array;
}

function submitAnswers():void
{
//Initial state is correct unselected
var correct:Boolean = true;
var corrLen:Number = questions_array[currentQuestion].correctAnswer.length;
var len:Number = tempNum2;
if ( len == 2 )
{
  tries = 3;
}

for( var i:int=0; i<len; i++ )
{
  if( question_array[currentQuestion].correctAnswer == answerRecord[currentQuestion].userAnswer &&
    question_array[currentQuestion].correctAnswer != undefined &&
    answerRecord[currentQuestion].userAnswer != undefined )
  {
   //correct selected
   if ( tries > 1 )
   {
    //as2 code: _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.setRGB( 0x4DDD5A );
   
    var distracterBkgdColorTransform:ColorTransform = _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.transform.colorTransform; 
    distracterBkgdColorTransform.color = 0x4DDD5A; 
    _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.transform.colorTransform = distracterBkgdColorTransform;


    //as2 code:     _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.setRGB( 0x3366CC );
   
    var selectionMarkColorTransform:ColorTransform = _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0x3366CC; 
    _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
  
   }
  }
  else if( question_array[currentQuestion].correctAnswer != answerRecord[currentQuestion].userAnswer &&
      answerRecord[currentQuestion].userAnswer == undefined &&
      question_array[currentQuestion].correctAnswer != undefined )
  {
   //correct unselected
   if ( tries > 1 )
   {
    //as2 code: _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.setRGB( 0x4DDD5A );
   
    var distracterBkgdColorTransform:ColorTransform = _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.transform.colorTransform; 
    distracterBkgdColorTransform.color = 0x4DDD5A; 
    _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].distracterBkgdColor.transform.colorTransform = distracterBkgdColorTransform;
   
   
    //as2 code: _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.setRGB( 0xFFFFFF );
  
    var selectionMarkColorTransform:ColorTransform = _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0xFFFFFF; 
    _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
  
   }
  
   correct = false;
  }
  else if( question_array[currentQuestion].correctAnswer != answerRecord[currentQuestion].userAnswer &&
      answerRecord[currentQuestion].userAnswer != undefined &&
      question_array[currentQuestion].correctAnswer == undefined )
  {
   //incorrect selected
   if ( tries > 1 )
   {
    //as2 code: _mc["distracter_"+answerRecord[currentQuestion].userAnswer+"_mc"].selectionMarkColor.setRGB( 0x3366CC );
   
    var selectionMarkColorTransform:ColorTransform = _mc["distracter_"+answerRecord[currentQuestion].userAnswer+"_mc"].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0x3366CC; 
    _mc["distracter_"+answerRecord[currentQuestion].userAnswer+"_mc"].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
   
   }
  
   correct = false;
  }
 
}
 
if( !correct )
{
  displayFeedback( "incorrect" );
}
else
{
  //If the user gets the answer right first try set correct state for each distractor.
  if ( tries = 1 )
  {
   for( var i:int = 0; i<len; i++ )
   {
    //as2 code: _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.setRGB( 0x3366CC );
   
    var selectionMarkColorTransform:ColorTransform = _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0x3366CC; 
    _mc["distracter_"+question_array[currentQuestion].correctAnswer+"_mc"].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
   
   }
  }
  displayFeedback( "correct" );
}

setNavBtnState( "submitAnswer" );
}

function displayFeedback( type ):void
{
var margin:Number = 30;

var feedbackFmt:TextFormat = new TextFormat();
feedbackFmt.color = 0x000000;
feedbackFmt.size = 12;
feedbackFmt.font = "Arial";
feedbackFmt.align = "right";

//Standard feedback text field
//as2 code: _mc.createTextField("feedback_txt",depth++,324,36,619,20);
var feedback_txt:TextField = new TextField();
feedback_txt.x = 324;
feedback_txt.y = 36;
feedback_txt.width = 619;
feedback_txt.height = 20;
_mc.addChild( feedback_txt );

_mc.feedback_txt.type = "dynamic";
_mc.feedback_txt.antiAliasType = "advanced";
_mc.feedback_txt.autoSize = true;
_mc.feedback_txt.wordWrap = true;
_mc.feedback_txt.html = true;
_mc.feedback_txt.multiline = true;
_mc.feedback_txt.embedFonts = true;
_mc.feedback_txt.selectable = true;

if( type == "correct" )

   tries = 3;
   if ( question_array[currentQuestion].type != 'single' )
   {
     _mc.feedback_txt.htmlText = "<p>Correct.</p>";
     specifcFeedback1.visible = true;
     specifcFeedback2.visible = true;
   
   }
   else
   {
    _mc.feedback_txt.htmlText = "<p>Correct.</p>";
    specifcFeedback1.visible = true;
    specifcFeedback2.visible = true;
   }
   _mc.feedback_txt.setTextFormat( feedbackFmt );
}
else
{
  if ( tries > 1 )
  {
   tries++;
   if ( question_array[currentQuestion].type != 'single' )
   {
    _mc.feedback_txt.htmlText = "<p>Incorrect. Review the correct answers below.</p>";
    specifcFeedback1.visible = true;
    specifcFeedback2.visible = true;
   }
   else if ( numDistractors == 2 )
   {
    _mc.feedback_txt.htmlText = "<p>Incorrect.</p>";
    specifcFeedback1.visible = true;
    specifcFeedback2.visible = true;
   }
   else
   {
    _mc.feedback_txt.htmlText = "<p>Incorrect. Review the correct answer below.</p>";
    specifcFeedback1.visible = true;
    specifcFeedback2.visible = true;
   }
   _mc.feedback_txt.setTextFormat( feedbackFmt );
   specifcFeedback1.visible = true;
   specifcFeedback2.visible = true;
  }
  else
  {
   tries++;
   if ( question_array[currentQuestion].type != 'single' )
   {
    _mc.feedback_txt.htmlText = "<p>Try again.</p>";
   }
   else
   {
    _mc.feedback_txt.htmlText = "<p>Try again.</p>";
   }
   _mc.feedback_txt.setTextFormat( feedbackFmt );
  }
}
}

function evtHandler( obj ):void
{
var temp:Object = obj.split("_");
switch( temp[0] )
{
  case "distracter":
   if( userAnswers_array[temp[1]] != undefined )
   {
    userAnswers_array[temp[1]] = undefined;
   
    //as2 code: _mc[obj].selectionMarkColor.setRGB( 0xFFFFFF );
   
    var selectionMarkColorTransform:ColorTransform = _mc[obj].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0xFFFFFF; 
    _mc[obj].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
   
   }
   else
   {
    //If the question type is single correct or t/f then clear
    //all distractor boxes before marking current choices
    if ( question_array[currentQuestion].type != "multi" )
    {
     var len:Number = tempNum2;
     for( var i:int = 0; i<len; i++ )
      {
       userAnswers_array = undefined;
      
       //as2 code: _mc["distracter_"+ i +"_mc"].selectionMarkColor.setRGB( 0xFFFFFF );
      
       var selectionMarkColorTransform:ColorTransform = _mc["distracter_"+ i +"_mc"].selectionMarkColor.transform.colorTransform; 
       selectionMarkColorTransform.color = 0xFFFFFF; 
       _mc["distracter_"+ i +"_mc"].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
   
      }
    }
    userAnswers_array[temp[1]] = temp[1];
   
    //as2 code: _mc[obj].selectionMarkColor.setRGB( 0x3366CC );
     var selectionMarkColorTransform:ColorTransform = _mc[obj].selectionMarkColor.transform.colorTransform; 
    selectionMarkColorTransform.color = 0x3366CC; 
    _mc[obj].selectionMarkColor.transform.colorTransform = selectionMarkColorTransform;
   
   }
   setNavBtnState( "userSelection" );
  break;
 
  case "submit":
   recordAnswers( userAnswers_array );
  break;
}
}

function setNavBtnState( type ):void
{
switch( type )
{
  case "newQuestion":
  
   //as2 code: submit_mc.submitBrdrColor.setRGB( 0x000000 );
   var submitBrdrColorTransform:ColorTransform = submit_mc.submitBrdrColor.transform.colorTransform; 
   submitBrdrColorTransform.color = 0x000000; 
   submit_mc.submitBrdrColor.transform.colorTransform = submitBrdrColorTransform;
  
   submit_mc.alpha = 30;
   submit_mc.useHandCursor = false;
   submitDisabled = true;
  break;
 
  case "userSelection":
   submit_mc.alpha = 100;
   submit_mc.useHandCursor = true;
   submitDisabled = false;
  break;
 
  case "submitAnswer":
   submit_mc.alpha = 30;
   submit_mc.useHandCursor = false;
   submitDisabled = true;
  break;
}
}

function init():void
{
createQuestion( currentQuestion );
setNavBtnState( "newQuestion" );
}

This topic has been closed for replies.

1 reply

Participating Frequently
May 26, 2011

Hi Willy,

#1

that's not QA team here, so it's too lengthy. What part seems to fail?

#2

Also, could you let me know whether the forum even allow the attachment of FLA and AS files?

No, you can't. See that thread for possibilities:

http://forums.adobe.com/message/3698896#3698896

regards,

Peter