Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

How to make a morse code translator in AS 3.0

Community Beginner ,
Jan 23, 2014 Jan 23, 2014

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.

TOPICS
ActionScript
2.4K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

LEGEND , Jan 24, 2014 Jan 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;

//

...
Translate
Community Expert ,
Jan 23, 2014 Jan 23, 2014

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

var obj:Object={};

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

etc

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 24, 2014 Jan 24, 2014

thanks for replying,

could you explain some more deep?

i couldn't understand

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 24, 2014 Jan 24, 2014

what don't you understand?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Jan 24, 2014 Jan 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] = "----.";

                    }

          }

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Jan 24, 2014 Jan 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;

          }

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 24, 2014 Jan 24, 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...

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Jan 25, 2014 Jan 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;

                              }

                    }

          }

}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jun 10, 2025 Jun 10, 2025
LATEST

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: "-.-.", D: "-..", 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 .

 
 
 
 
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines