Skip to main content
Participant
January 23, 2014
Answered

How to make a morse code translator in AS 3.0

  • January 23, 2014
  • 4 replies
  • 2767 views

hi everybody, thanks for viewing my message.

i wanna make a morse code translator.

what is morse code?

(morse code is used by navy pilots to communicate through light and/or sound)

(each alphabet is referred as dot's and dashes. dots being shorter duration and dashes being longer duration)

so this is it.

i want a dynamic text box on the above of the screen in flash player(swf)(input field)

and below of this i need another text box for the output.(this text box must be unwritable if possible)

and i need a button to convert( the text on that button is translate )

how this works?

i must input alphabets in the above text field and when i press translate button it should show the dots and dashes referred to that character.

and vice versa.

oh and i need it for as 3.0(i need everything inside a movieclip so that the play, next frame previous frame options do not function in flash player)

i am familiar with some scripting.

so i need the scripting for  one character so that i will copy that for every character.

please help me on this

Thanks for reading this loooooong message.

hoping for some scripting.

Correct answer Andrei1-bKoviI

Here is a basic blueprint for doing that.

First code will work when you place it on Flash timeline. You just need to compile swf.

Second - class variation if you feel like you are comfortable with classes.

Read comments.

import flash.events.Event;

import flash.text.TextField;

import flash.text.TextFieldAutoSize;

import flash.text.TextFieldType;

import flash.text.TextFormat;

import flash.utils.Dictionary;

// map of letters and integers regualar expressions to Morse code conventions

var charMap:Dictionary;

// five spaces per convention

var wordSeparator:String = "       ";

// three spaces per convention

var letterSeparator:String = "   ";

var input:TextField;

var output:TextField;

var prompt:TextField;

init();

function init():void

{

          createMap();

          drawUI();

}

function drawUI():void

{

          drawInput();

          drawOutput();

          drawPrompt();

          placeUI();

}

/**

* Places UI elements and positions them relative to each other

*/

function placeUI():void

{

          addChild(prompt);

          addChild(input);

          addChild(output);

          prompt.x = input.x = output.x = prompt.y = 20;

          input.y = prompt.y + prompt.height;

          output.y = input.y + input.height + 10;

}

/**

* Creates prompt text field

*/

function drawPrompt():void

{

          prompt = new TextField();

          prompt.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

          prompt.multiline = output.wordWrap = false;

          prompt.autoSize = TextFieldAutoSize.LEFT;

          prompt.text = "enter text:"

}

/**

* Creates output text field

*/

function drawOutput():void

{

          output = new TextField();

          output.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

          output.multiline = output.wordWrap = false;

          output.border = true;

          output.borderColor = 0x008040;

          output.background = true;

          output.backgroundColor = 0xDFFFEF;

          output.width = 500;

          output.height = 22;

}

/**

* Creates input text field

*/

function drawInput():void

{

          input = new TextField();

          input.defaultTextFormat = new TextFormat("Arial", 12);

          input.type = TextFieldType.INPUT;

          input.restrict = "A-Z 0-9";

          input.multiline = input.wordWrap = false;

          input.border = true;

          input.borderColor = 0x808080;

          input.background = true;

          input.backgroundColor = 0xF0F0F0;

          input.width = 500;

          input.height = 22;

          input.addEventListener(Event.CHANGE, onInput);

}

/**

* Handles input text field change event

* @param          e

*/

function onInput(e:Event):void

{

          var outString:String = input.text;

          // append word separator to words

          outString = outString.replace(/\b\w+\b/g, addWordSeparator);

          // append letter separator to letters

          outString = outString.replace(/\w/g, addLetterSeparator);

          // loop through the map and replace characers with corresponding Morse codes

          for (var prop:Object in charMap)

                    outString = outString.replace(RegExp(prop), charMap[prop]);

          output.text = outString;

}

/**

* Used in String.replace() to inject word separator

* @return

*/

function addWordSeparator():String

{

          return [arguments[0], wordSeparator].join("");

}

/**

* Used in String.replace() to inject letter separator

* @return

*/

function addLetterSeparator():String

{

          return [arguments[0], letterSeparator].join("");

}

/**

* Creates mapping of alphanumerical characters to Morse code conventions

*/

function createMap():void

{

          // international convention

          charMap = new Dictionary();

          charMap[/A/g] = ".-";

          charMap[/B/g] = "-...";

          charMap[/C/g] = "-.-.";

          charMap[/D/g] = "-..";

          charMap[/E/g] = ".";

          charMap[/F/g] = "..-.";

          charMap[/G/g] = "--.";

          charMap[/H/g] = "....";

          charMap[/I/g] = "..";

          charMap[/J/g] = ".---";

          charMap[/K/g] = "-.-";

          charMap[/L/g] = ".-..";

          charMap[/M/g] = "--";

          charMap[/N/g] = "-.";

          charMap[/O/g] = "---";

          charMap[/P/g] = ".--.";

          charMap[/Q/g] = "--.-";

          charMap[/R/g] = ".-.";

          charMap[/S/g] = "...";

          charMap[/T/g] = "-";

          charMap[/U/g] = "..-";

          charMap[/V/g] = "...-";

          charMap[/W/g] = ".--";

          charMap[/X/g] = "-..-";

          charMap[/Y/g] = "-.--";

          charMap[/Z/g] = "--..";

          charMap[/0/g] = "-----";

          charMap[/1/g] = ".----";

          charMap[/2/g] = "..---";

          charMap[/3/g] = "...--";

          charMap[/4/g] = "....-";

          charMap[/5/g] = ".....";

          charMap[/6/g] = "-....";

          charMap[/7/g] = "--...";

          charMap[/8/g] = "---..";

          charMap[/9/g] = "----.";

}

Class version:

package

{

          import flash.display.Sprite;

          import flash.events.Event;

          import flash.text.TextField;

          import flash.text.TextFieldAutoSize;

          import flash.text.TextFieldType;

          import flash.text.TextFormat;

          import flash.utils.Dictionary;

          public class Morse extends Sprite

          {

                    // map of letters and integers regualr expressions to Morse code conventions

                    private var charMap:Dictionary;

                    // five spaces per convention

                    private var wordSeparator:String = "       ";

                    // three spaces per convention

                    private var letterSeparator:String = "   ";

                    private var input:TextField;

                    private var output:TextField;

                    private var prompt:TextField;

                    public function Morse()

                    {

                              init();

                    }

                    private function init():void

                    {

                              createMap();

                              drawUI();

                    }

                    private function drawUI():void

                    {

                              drawInput();

                              drawOutput();

                              drawPrompt();

                              placeUI();

                    }

                    /**

                     * Places UI elements and positions them relative to each other

                     */

                    private function placeUI():void

                    {

                              addChild(prompt);

                              addChild(input);

                              addChild(output);

                              prompt.x = input.x = output.x = prompt.y = 20;

                              input.y = prompt.y + prompt.height;

                              output.y = input.y + input.height + 10;

                    }

                    /**

                     * Creates prompt text field

                     */

                    private function drawPrompt():void

                    {

                              prompt = new TextField();

                              prompt.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

                              prompt.multiline = output.wordWrap = false;

                              prompt.autoSize = TextFieldAutoSize.LEFT;

                              prompt.text = "enter text:"

                    }

                    /**

                     * Creates output text field

                     */

                    private function drawOutput():void

                    {

                              output = new TextField();

                              output.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

                              output.multiline = output.wordWrap = false;

                              output.border = true;

                              output.borderColor = 0x008040;

                              output.background = true;

                              output.backgroundColor = 0xDFFFEF;

                              output.width = 500;

                              output.height = 22;

                    }

                    /**

                     * Creates input text field

                     */

                    private function drawInput():void

                    {

                              input = new TextField();

                              input.defaultTextFormat = new TextFormat("Arial", 12);

                              input.type = TextFieldType.INPUT;

                              input.restrict = "A-Z 0-9";

                              input.multiline = input.wordWrap = false;

                              input.border = true;

                              input.borderColor = 0x808080;

                              input.background = true;

                              input.backgroundColor = 0xF0F0F0;

                              input.width = 500;

                              input.height = 22;

                              input.addEventListener(Event.CHANGE, onInput);

                    }

                    /**

                     * Handles input text field change event

                     * @param          e

                     */

                    private function onInput(e:Event):void

                    {

                              var outString:String = input.text;

                              // append word separator to words

                              outString = outString.replace(/\b\w+\b/g, addWordSeparator);

                              // append letter separator to letters

                              outString = outString.replace(/\w/g, addLetterSeparator);

                              // loop through the map and replace characers with corresponding Morse codes

                              for (var prop:Object in charMap)

                                        outString = outString.replace(RegExp(prop), charMap[prop]);

                              output.text = outString;

                    }

                    /**

                     * Used in String.replace() to inject word separator

                     * @return

                     */

                    private function addWordSeparator():String

                    {

                              return [arguments[0], wordSeparator].join("");

                    }

                    /**

                     * Used in String.replace() to inject letter separator

                     * @return

                     */

                    private function addLetterSeparator():String

                    {

                              return [arguments[0], letterSeparator].join("");

                    }

                    /**

                     * Creates mapping of alphanumerical characters to Morse code conventions

                     */

                    private function createMap():void

                    {

                              // international convention

                              charMap = new Dictionary();

                              charMap[/A/g] = ".-";

                              charMap[/B/g] = "-...";

                              charMap[/C/g] = "-.-.";

                              charMap[/D/g] = "-..";

                              charMap[/E/g] = ".";

                              charMap[/F/g] = "..-.";

                              charMap[/G/g] = "--.";

                              charMap[/H/g] = "....";

                              charMap[/I/g] = "..";

                              charMap[/J/g] = ".---";

                              charMap[/K/g] = "-.-";

                              charMap[/L/g] = ".-..";

                              charMap[/M/g] = "--";

                              charMap[/N/g] = "-.";

                              charMap[/O/g] = "---";

                              charMap[/P/g] = ".--.";

                              charMap[/Q/g] = "--.-";

                              charMap[/R/g] = ".-.";

                              charMap[/S/g] = "...";

                              charMap[/T/g] = "-";

                              charMap[/U/g] = "..-";

                              charMap[/V/g] = "...-";

                              charMap[/W/g] = ".--";

                              charMap[/X/g] = "-..-";

                              charMap[/Y/g] = "-.--";

                              charMap[/Z/g] = "--..";

                              charMap[/0/g] = "-----";

                              charMap[/1/g] = ".----";

                              charMap[/2/g] = "..---";

                              charMap[/3/g] = "...--";

                              charMap[/4/g] = "....-";

                              charMap[/5/g] = ".....";

                              charMap[/6/g] = "-....";

                              charMap[/7/g] = "--...";

                              charMap[/8/g] = "---..";

                              charMap[/9/g] = "----.";

                    }

          }

}

4 replies

Participant
June 11, 2025

Hi Black Blade 5, to create a simple morse code translator in AS 3.0, set up two text boxes (input_txt and output_txt) and a button (translate_btn). Use this code inside a movieclip:

action script
var morse:Object = { A: ".-", B: "-...", C: "-.-.", 😧 "-..", E: "." }; translate_btn.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void { var input:String = input_txt.text.toUpperCase(); var output:String = ""; for (var i:int = 0; i < input.length; i++) { var ch:String = input.charAt(i); output += morse[ch] ? morse[ch] + " " : ch + " "; } output_txt.text = output; });

This lets you type letters and see their Morse equivalents when clicking "Translate." For full functionality, just expand the morse object with more letters. It’s a simple way to build a basic morse code translator .

 
 
 
 
Inspiring
January 24, 2014

And this solution translates both ways - from alphanumerical to Morse and from Morse to alphanumerical.

import flash.events.Event;

import flash.text.TextField;

import flash.text.TextFieldAutoSize;

import flash.text.TextFieldType;

import flash.text.TextFormat;

import flash.utils.Dictionary;

// general mapping of chars to morse code

var baseMap:Object;

// map of letters and integers regualr expressions to Morse code conventions

var charMap:Dictionary;

// map of morse to characters

var morseMap:Dictionary;

// five spaces per convention

var wordSeparator:String = "       ";

// three spaces per convention

var letterSeparator:String = "   ";

var alphaInput:TextField;

var morseOutput:TextField;

var morseInput:TextField;

var alphaOutput:TextField;

var alphaPrompt:TextField;

var morsePrompt:TextField;

init();

function init():void

{

          createMaps();

          drawUI();

}

function drawUI():void

{

          drawInputs();

          drawOutputs();

          drawPrompts();

          placeUI();

}

function drawPrompts():void

{

          alphaPrompt = drawPrompt("enter alphanumerical text:");

          morsePrompt = drawPrompt("enter morse sequences (letters must be separated by 3 spaces; words - by 5 spaces):");

}

/**

* Creates alphaPrompt test field

*/

function drawPrompt(text:String):TextField

{

          var textField:TextField = new TextField();

          textField.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

          textField.multiline = morseOutput.wordWrap = false;

          textField.autoSize = TextFieldAutoSize.LEFT;

          textField.text = text;

          return textField;

}

function drawOutputs():void

{

          alphaOutput = drawOutput();

          morseOutput = drawOutput();

}

/**

* Creates output text field

*/

function drawOutput():TextField

{

          var textField:TextField = new TextField();

          textField.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

          textField.multiline = textField.wordWrap = false;

          textField.border = true;

          textField.borderColor = 0x005329;

          textField.background = true;

          textField.backgroundColor = 0xF4FFFA;

          textField.width = 500;

          textField.height = 22;

          return textField;

}

function drawInputs():void

{

          alphaInput = drawInput("A-Z 0-9", onAlphaInput);

          morseInput = drawInput("-. ", onMorseInput);

}

/**

* Creates input text field

* @param          restrict - charachters allowed for intput

* @param          handler - function that hsndles Event.CHANGE

* @return

*/

function drawInput(restrict:String, handler:Function):TextField

{

          var textField:TextField = new TextField();

          textField.defaultTextFormat = new TextFormat("Arial", 12);

          textField.type = TextFieldType.INPUT;

          textField.restrict = restrict;

          textField.multiline = textField.wordWrap = false;

          textField.border = true;

          textField.borderColor = 0x808080;

          textField.background = true;

          textField.backgroundColor = 0xF0F0F0;

          textField.width = 500;

          textField.height = 22;

          textField.addEventListener(Event.CHANGE, handler);

          return textField;

}

/**

* Places UI elements and positions them relative to each other

*/

function placeUI():void

{

          var children:Array = [alphaPrompt, alphaInput, morseOutput, morsePrompt, morseInput, alphaOutput];

          var nextY:Number = 20;

          for each (var textField:TextField in children)

          {

                    addChild(textField);

                    textField.x = 20;

                    textField.y = nextY;

                    nextY += textField.height + 10 * int(textField != alphaPrompt && textField != morsePrompt);

          }

}

/**

* Handles alphaInput text field change event

* @param          e

*/

function onAlphaInput(e:Event):void

{

          var outString:String = alphaInput.text;

          // append word separator to words

          outString = outString.replace(/\b\w+\b/g, addWordSeparator);

          // append letter separator to letters

          outString = outString.replace(/\w/g, addLetterSeparator);

          // loop through the map and replace characers with corresponding Morse codes

          for (var prop:Object in charMap)

                    outString = outString.replace(RegExp(prop), charMap[prop]);

          morseOutput.text = outString;

}

/**

* Handles morseInput text field change event.

* @param          e

*/

function onMorseInput(e:Event):void

{

          var outputString:String = morseInput.text;

          for each (var result:String in morseInput.text.match(/[\.\-]+\s\s\s/g))

          {

                    if (morseMap[result])

                    {

                              outputString = outputString.replace(result, morseMap[result]);

                    }

                    else

                    {

                              // if this is not a valid code - remove it from the text input

                              morseInput.text = morseInput.text.replace(result, "");

                              outputString = outputString.replace(result, "");

                    }

 

          }

          outputString = outputString.replace(/[\.\-]/g, "").replace(/\s+/g, " ");

          alphaOutput.text = outputString;

}

/**

* Used in String.replace() to inject word separator

* @return

*/

function addWordSeparator():String

{

          return [arguments[0], wordSeparator].join("");

}

/**

* Used in String.replace() to inject letter separator

* @return

*/

function addLetterSeparator():String

{

          return [arguments[0], letterSeparator].join("");

}

function createMaps():void

{

          createBaseMap();

          createCharMap();

}

/**

* Creates chars to morse code relations

*/

function createBaseMap():void

{

          // international convention

          baseMap = {};

          baseMap["A"] = ".-";

          baseMap["B"] = "-...";

          baseMap["C"] = "-.-.";

          baseMap["D"] = "-..";

          baseMap["E"] = ".";

          baseMap["F"] = "..-.";

          baseMap["G"] = "--.";

          baseMap["H"] = "....";

          baseMap["I"] = "..";

          baseMap["J"] = ".---";

          baseMap["K"] = "-.-";

          baseMap["L"] = ".-..";

          baseMap["M"] = "--";

          baseMap["N"] = "-.";

          baseMap["O"] = "---";

          baseMap["P"] = ".--.";

          baseMap["Q"] = "--.-";

          baseMap["R"] = ".-.";

          baseMap["S"] = "...";

          baseMap["T"] = "-";

          baseMap["U"] = "..-";

          baseMap["V"] = "...-";

          baseMap["W"] = ".--";

          baseMap["X"] = "-..-";

          baseMap["Y"] = "-.--";

          baseMap["Z"] = "--..";

          baseMap["0"] = "-----";

          baseMap["1"] = ".----";

          baseMap["2"] = "..---";

          baseMap["3"] = "...--";

          baseMap["4"] = "....-";

          baseMap["5"] = ".....";

          baseMap["6"] = "-....";

          baseMap["7"] = "--...";

          baseMap["8"] = "---..";

          baseMap["9"] = "----.";

}

/**

* Creates mapping of alphanumerical characters to Morse code conventions

*/

function createCharMap():void

{

          charMap = new Dictionary();

          morseMap = new Dictionary();

          for (var prop:String in baseMap)

          {

                    // create chars to morse map

                    charMap[new RegExp(prop, "g")] = baseMap[prop];

                    // create morse to chars map

                    morseMap[baseMap[prop] + letterSeparator] = prop;

          }

}

Participant
January 25, 2014

thanks Andrei1 for you reply for the code.

i am famliar only with classes however i will try both.

I never thought somebody would post the FULL code but you did.

thanks man...

Inspiring
January 25, 2014

You are welcome.

Here is a class version of the two-way translator:

package

{

          import flash.display.Sprite;

          import flash.events.Event;

          import flash.text.TextField;

          import flash.text.TextFieldAutoSize;

          import flash.text.TextFieldType;

          import flash.text.TextFormat;

          import flash.utils.Dictionary;

          public class Morse extends Sprite

          {

                    // general mapping of chars to morse code

                    private var baseMap:Object;

                    // map of letters and integers regualr expressions to Morse code conventions

                    private var charMap:Dictionary;

                    // map of morse to characters

                    private var morseMap:Dictionary;

                    // five spaces per convention

                    private var wordSeparator:String = "       ";

                    // three spaces per convention

                    private var letterSeparator:String = "   ";

                    private var alphaInput:TextField;

                    private var morseOutput:TextField;

                    private var morseInput:TextField;

                    private var alphaOutput:TextField;

                    private var alphaPrompt:TextField;

                    private var morsePrompt:TextField;

                    public function Morse()

                    {

                              init();

                    }

                    private function init():void

                    {

                              createMaps();

                              drawUI();

                    }

                    private function drawUI():void

                    {

                              drawInputs();

                              drawOutputs();

                              drawPrompts();

                              placeUI();

                    }

                    private function drawPrompts():void

                    {

                              alphaPrompt = drawPrompt("enter alphanumerical text:");

                              morsePrompt = drawPrompt("enter morse sequences (letters must be separated by 3 spaces; words - by 5 spaces):");

                    }

                    /**

                     * Creates alphaPrompt test field

                     */

                    private function drawPrompt(text:String):TextField

                    {

                              var textField:TextField = new TextField();

                              textField.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

                              textField.multiline = morseOutput.wordWrap = false;

                              textField.autoSize = TextFieldAutoSize.LEFT;

                              textField.text = text;

                              return textField;

                    }

                    private function drawOutputs():void

                    {

                              alphaOutput = drawOutput();

                              morseOutput = drawOutput();

                    }

                    /**

                     * Creates output text field

                     */

                    private function drawOutput():TextField

                    {

                              var textField:TextField = new TextField();

                              textField.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

                              textField.multiline = textField.wordWrap = false;

                              textField.border = true;

                              textField.borderColor = 0x005329;

                              textField.background = true;

                              textField.backgroundColor = 0xF4FFFA;

                              textField.width = 500;

                              textField.height = 22;

                              return textField;

                    }

                    private function drawInputs():void

                    {

                              alphaInput = drawInput("A-Z 0-9", onAlphaInput);

                              morseInput = drawInput("-. ", onMorseInput);

                    }

                    /**

                     * Creates input text field

                     * @param          restrict - charachters allowed for intput

                     * @param          handler - function that hsndles Event.CHANGE

                     * @return

                     */

                    private function drawInput(restrict:String, handler:Function):TextField

                    {

                              var textField:TextField = new TextField();

                              textField.defaultTextFormat = new TextFormat("Arial", 12);

                              textField.type = TextFieldType.INPUT;

                              textField.restrict = restrict;

                              textField.multiline = textField.wordWrap = false;

                              textField.border = true;

                              textField.borderColor = 0x808080;

                              textField.background = true;

                              textField.backgroundColor = 0xF0F0F0;

                              textField.width = 500;

                              textField.height = 22;

                              textField.addEventListener(Event.CHANGE, handler);

                              return textField;

                    }

                    /**

                     * Places UI elements and positions them relative to each other

                     */

                    private function placeUI():void

                    {

                              var children:Array = [alphaPrompt, alphaInput, morseOutput, morsePrompt, morseInput, alphaOutput];

                              var nextY:Number = 20;

                              for each (var textField:TextField in children)

                              {

                                        addChild(textField);

                                        textField.x = 20;

                                        textField.y = nextY;

                                        nextY += textField.height + 10 * int(textField != alphaPrompt && textField != morsePrompt);

                              }

                    }

                    /**

                     * Handles alphaInput text field change event

                     * @param          e

                     */

                    private function onAlphaInput(e:Event):void

                    {

                              var outString:String = alphaInput.text;

                              // append word separator to words

                              outString = outString.replace(/\b\w+\b/g, addWordSeparator);

                              // append letter separator to letters

                              outString = outString.replace(/\w/g, addLetterSeparator);

                              // loop through the map and replace characers with corresponding Morse codes

                              for (var prop:Object in charMap)

                                        outString = outString.replace(RegExp(prop), charMap[prop]);

                              morseOutput.text = outString;

                    }

                    /**

                     * Handles morseInput text field change event.

                     * @param          e

                     */

                    private function onMorseInput(e:Event):void

                    {

                              var outputString:String = morseInput.text;

                              for each (var result:String in morseInput.text.match(/[\.\-]+\s\s\s/g))

                              {

                                        if (morseMap[result])

                                        {

                                                  outputString = outputString.replace(result, morseMap[result]);

                                        }

                                        else

                                        {

                                                  // if this is not a valid code - remove it from the text input

                                                  morseInput.text = morseInput.text.replace(result, "");

                                                  outputString = outputString.replace(result, "");

                                        }

                              }

                              alphaOutput.text = outputString.replace(/[\.\-]/g, "").replace(/\s+/g, " ");

                            

                    }

                    /**

                     * Used in String.replace() to inject word separator

                     * @return

                     */

                    private function addWordSeparator():String

                    {

                              return [arguments[0], wordSeparator].join("");

                    }

                    /**

                     * Used in String.replace() to inject letter separator

                     * @return

                     */

                    private function addLetterSeparator():String

                    {

                              return [arguments[0], letterSeparator].join("");

                    }

                    private function createMaps():void

                    {

                              createBaseMap();

                              createCharMap();

                    }

                    /**

                     * Creates chars to morse code relations

                     */

                    private function createBaseMap():void

                    {

                              // international convention

                              baseMap = {};

                              baseMap["A"] = ".-";

                              baseMap["B"] = "-...";

                              baseMap["C"] = "-.-.";

                              baseMap["D"] = "-..";

                              baseMap["E"] = ".";

                              baseMap["F"] = "..-.";

                              baseMap["G"] = "--.";

                              baseMap["H"] = "....";

                              baseMap["I"] = "..";

                              baseMap["J"] = ".---";

                              baseMap["K"] = "-.-";

                              baseMap["L"] = ".-..";

                              baseMap["M"] = "--";

                              baseMap["N"] = "-.";

                              baseMap["O"] = "---";

                              baseMap["P"] = ".--.";

                              baseMap["Q"] = "--.-";

                              baseMap["R"] = ".-.";

                              baseMap["S"] = "...";

                              baseMap["T"] = "-";

                              baseMap["U"] = "..-";

                              baseMap["V"] = "...-";

                              baseMap["W"] = ".--";

                              baseMap["X"] = "-..-";

                              baseMap["Y"] = "-.--";

                              baseMap["Z"] = "--..";

                              baseMap["0"] = "-----";

                              baseMap["1"] = ".----";

                              baseMap["2"] = "..---";

                              baseMap["3"] = "...--";

                              baseMap["4"] = "....-";

                              baseMap["5"] = ".....";

                              baseMap["6"] = "-....";

                              baseMap["7"] = "--...";

                              baseMap["8"] = "---..";

                              baseMap["9"] = "----.";

                    }

                    /**

                     * Creates mapping of alphanumerical characters to Morse code conventions

                     */

                    private function createCharMap():void

                    {

                              charMap = new Dictionary();

                              morseMap = new Dictionary();

                              for (var prop:String in baseMap)

                              {

                                        // create chars to morse map

                                        charMap[new RegExp(prop, "g")] = baseMap[prop];

                                        // create morse to chars map

                                        morseMap[baseMap[prop] + letterSeparator] = prop;

                              }

                    }

          }

}

Andrei1-bKoviICorrect answer
Inspiring
January 24, 2014

Here is a basic blueprint for doing that.

First code will work when you place it on Flash timeline. You just need to compile swf.

Second - class variation if you feel like you are comfortable with classes.

Read comments.

import flash.events.Event;

import flash.text.TextField;

import flash.text.TextFieldAutoSize;

import flash.text.TextFieldType;

import flash.text.TextFormat;

import flash.utils.Dictionary;

// map of letters and integers regualar expressions to Morse code conventions

var charMap:Dictionary;

// five spaces per convention

var wordSeparator:String = "       ";

// three spaces per convention

var letterSeparator:String = "   ";

var input:TextField;

var output:TextField;

var prompt:TextField;

init();

function init():void

{

          createMap();

          drawUI();

}

function drawUI():void

{

          drawInput();

          drawOutput();

          drawPrompt();

          placeUI();

}

/**

* Places UI elements and positions them relative to each other

*/

function placeUI():void

{

          addChild(prompt);

          addChild(input);

          addChild(output);

          prompt.x = input.x = output.x = prompt.y = 20;

          input.y = prompt.y + prompt.height;

          output.y = input.y + input.height + 10;

}

/**

* Creates prompt text field

*/

function drawPrompt():void

{

          prompt = new TextField();

          prompt.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

          prompt.multiline = output.wordWrap = false;

          prompt.autoSize = TextFieldAutoSize.LEFT;

          prompt.text = "enter text:"

}

/**

* Creates output text field

*/

function drawOutput():void

{

          output = new TextField();

          output.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

          output.multiline = output.wordWrap = false;

          output.border = true;

          output.borderColor = 0x008040;

          output.background = true;

          output.backgroundColor = 0xDFFFEF;

          output.width = 500;

          output.height = 22;

}

/**

* Creates input text field

*/

function drawInput():void

{

          input = new TextField();

          input.defaultTextFormat = new TextFormat("Arial", 12);

          input.type = TextFieldType.INPUT;

          input.restrict = "A-Z 0-9";

          input.multiline = input.wordWrap = false;

          input.border = true;

          input.borderColor = 0x808080;

          input.background = true;

          input.backgroundColor = 0xF0F0F0;

          input.width = 500;

          input.height = 22;

          input.addEventListener(Event.CHANGE, onInput);

}

/**

* Handles input text field change event

* @param          e

*/

function onInput(e:Event):void

{

          var outString:String = input.text;

          // append word separator to words

          outString = outString.replace(/\b\w+\b/g, addWordSeparator);

          // append letter separator to letters

          outString = outString.replace(/\w/g, addLetterSeparator);

          // loop through the map and replace characers with corresponding Morse codes

          for (var prop:Object in charMap)

                    outString = outString.replace(RegExp(prop), charMap[prop]);

          output.text = outString;

}

/**

* Used in String.replace() to inject word separator

* @return

*/

function addWordSeparator():String

{

          return [arguments[0], wordSeparator].join("");

}

/**

* Used in String.replace() to inject letter separator

* @return

*/

function addLetterSeparator():String

{

          return [arguments[0], letterSeparator].join("");

}

/**

* Creates mapping of alphanumerical characters to Morse code conventions

*/

function createMap():void

{

          // international convention

          charMap = new Dictionary();

          charMap[/A/g] = ".-";

          charMap[/B/g] = "-...";

          charMap[/C/g] = "-.-.";

          charMap[/D/g] = "-..";

          charMap[/E/g] = ".";

          charMap[/F/g] = "..-.";

          charMap[/G/g] = "--.";

          charMap[/H/g] = "....";

          charMap[/I/g] = "..";

          charMap[/J/g] = ".---";

          charMap[/K/g] = "-.-";

          charMap[/L/g] = ".-..";

          charMap[/M/g] = "--";

          charMap[/N/g] = "-.";

          charMap[/O/g] = "---";

          charMap[/P/g] = ".--.";

          charMap[/Q/g] = "--.-";

          charMap[/R/g] = ".-.";

          charMap[/S/g] = "...";

          charMap[/T/g] = "-";

          charMap[/U/g] = "..-";

          charMap[/V/g] = "...-";

          charMap[/W/g] = ".--";

          charMap[/X/g] = "-..-";

          charMap[/Y/g] = "-.--";

          charMap[/Z/g] = "--..";

          charMap[/0/g] = "-----";

          charMap[/1/g] = ".----";

          charMap[/2/g] = "..---";

          charMap[/3/g] = "...--";

          charMap[/4/g] = "....-";

          charMap[/5/g] = ".....";

          charMap[/6/g] = "-....";

          charMap[/7/g] = "--...";

          charMap[/8/g] = "---..";

          charMap[/9/g] = "----.";

}

Class version:

package

{

          import flash.display.Sprite;

          import flash.events.Event;

          import flash.text.TextField;

          import flash.text.TextFieldAutoSize;

          import flash.text.TextFieldType;

          import flash.text.TextFormat;

          import flash.utils.Dictionary;

          public class Morse extends Sprite

          {

                    // map of letters and integers regualr expressions to Morse code conventions

                    private var charMap:Dictionary;

                    // five spaces per convention

                    private var wordSeparator:String = "       ";

                    // three spaces per convention

                    private var letterSeparator:String = "   ";

                    private var input:TextField;

                    private var output:TextField;

                    private var prompt:TextField;

                    public function Morse()

                    {

                              init();

                    }

                    private function init():void

                    {

                              createMap();

                              drawUI();

                    }

                    private function drawUI():void

                    {

                              drawInput();

                              drawOutput();

                              drawPrompt();

                              placeUI();

                    }

                    /**

                     * Places UI elements and positions them relative to each other

                     */

                    private function placeUI():void

                    {

                              addChild(prompt);

                              addChild(input);

                              addChild(output);

                              prompt.x = input.x = output.x = prompt.y = 20;

                              input.y = prompt.y + prompt.height;

                              output.y = input.y + input.height + 10;

                    }

                    /**

                     * Creates prompt text field

                     */

                    private function drawPrompt():void

                    {

                              prompt = new TextField();

                              prompt.defaultTextFormat = new TextFormat("Arial", 11, 0x004040);

                              prompt.multiline = output.wordWrap = false;

                              prompt.autoSize = TextFieldAutoSize.LEFT;

                              prompt.text = "enter text:"

                    }

                    /**

                     * Creates output text field

                     */

                    private function drawOutput():void

                    {

                              output = new TextField();

                              output.defaultTextFormat = new TextFormat("Arial", 12, 0x000000, "bold");

                              output.multiline = output.wordWrap = false;

                              output.border = true;

                              output.borderColor = 0x008040;

                              output.background = true;

                              output.backgroundColor = 0xDFFFEF;

                              output.width = 500;

                              output.height = 22;

                    }

                    /**

                     * Creates input text field

                     */

                    private function drawInput():void

                    {

                              input = new TextField();

                              input.defaultTextFormat = new TextFormat("Arial", 12);

                              input.type = TextFieldType.INPUT;

                              input.restrict = "A-Z 0-9";

                              input.multiline = input.wordWrap = false;

                              input.border = true;

                              input.borderColor = 0x808080;

                              input.background = true;

                              input.backgroundColor = 0xF0F0F0;

                              input.width = 500;

                              input.height = 22;

                              input.addEventListener(Event.CHANGE, onInput);

                    }

                    /**

                     * Handles input text field change event

                     * @param          e

                     */

                    private function onInput(e:Event):void

                    {

                              var outString:String = input.text;

                              // append word separator to words

                              outString = outString.replace(/\b\w+\b/g, addWordSeparator);

                              // append letter separator to letters

                              outString = outString.replace(/\w/g, addLetterSeparator);

                              // loop through the map and replace characers with corresponding Morse codes

                              for (var prop:Object in charMap)

                                        outString = outString.replace(RegExp(prop), charMap[prop]);

                              output.text = outString;

                    }

                    /**

                     * Used in String.replace() to inject word separator

                     * @return

                     */

                    private function addWordSeparator():String

                    {

                              return [arguments[0], wordSeparator].join("");

                    }

                    /**

                     * Used in String.replace() to inject letter separator

                     * @return

                     */

                    private function addLetterSeparator():String

                    {

                              return [arguments[0], letterSeparator].join("");

                    }

                    /**

                     * Creates mapping of alphanumerical characters to Morse code conventions

                     */

                    private function createMap():void

                    {

                              // international convention

                              charMap = new Dictionary();

                              charMap[/A/g] = ".-";

                              charMap[/B/g] = "-...";

                              charMap[/C/g] = "-.-.";

                              charMap[/D/g] = "-..";

                              charMap[/E/g] = ".";

                              charMap[/F/g] = "..-.";

                              charMap[/G/g] = "--.";

                              charMap[/H/g] = "....";

                              charMap[/I/g] = "..";

                              charMap[/J/g] = ".---";

                              charMap[/K/g] = "-.-";

                              charMap[/L/g] = ".-..";

                              charMap[/M/g] = "--";

                              charMap[/N/g] = "-.";

                              charMap[/O/g] = "---";

                              charMap[/P/g] = ".--.";

                              charMap[/Q/g] = "--.-";

                              charMap[/R/g] = ".-.";

                              charMap[/S/g] = "...";

                              charMap[/T/g] = "-";

                              charMap[/U/g] = "..-";

                              charMap[/V/g] = "...-";

                              charMap[/W/g] = ".--";

                              charMap[/X/g] = "-..-";

                              charMap[/Y/g] = "-.--";

                              charMap[/Z/g] = "--..";

                              charMap[/0/g] = "-----";

                              charMap[/1/g] = ".----";

                              charMap[/2/g] = "..---";

                              charMap[/3/g] = "...--";

                              charMap[/4/g] = "....-";

                              charMap[/5/g] = ".....";

                              charMap[/6/g] = "-....";

                              charMap[/7/g] = "--...";

                              charMap[/8/g] = "---..";

                              charMap[/9/g] = "----.";

                    }

          }

}

kglad
Community Expert
Community Expert
January 23, 2014

create an object that relates each morse code symbol to the corresponding alphanumic symbol.  ie,

var obj:Object={};

obj[".-"]="A";

etc

Participant
January 24, 2014

thanks for replying,

could you explain some more deep?

i couldn't understand

kglad
Community Expert
Community Expert
January 24, 2014

what don't you understand?