Cal11 calculator

Actionscript 3.0 Calculator Code

Reviewed by Calculator Editorial Team

ActionScript 3.0 is a powerful programming language for creating interactive applications in Adobe Flash. This guide provides complete ActionScript 3.0 calculator code examples and implementation details to help you build functional calculators in Flash.

Basic ActionScript 3.0 Calculator

The simplest ActionScript 3.0 calculator requires a text input field and buttons for numbers and operations. Here's a basic implementation:

Basic Calculator Code

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    public class BasicCalculator extends Sprite {
        private var inputField:TextField;
        private var currentValue:Number = 0;
        private var currentOperation:String = "";
        private var isNewInput:Boolean = true;

        public function BasicCalculator() {
            createInputField();
            createButtons();
        }

        private function createInputField():void {
            inputField = new TextField();
            inputField.width = 200;
            inputField.height = 30;
            inputField.border = true;
            inputField.background = true;
            inputField.backgroundColor = 0xFFFFFF;
            inputField.text = "0";
            addChild(inputField);
        }

        private function createButtons():void {
            // Number buttons
            for (var i:int = 0; i < 10; i++) {
                var numBtn:Sprite = new Sprite();
                numBtn.graphics.beginFill(0xCCCCCC);
                numBtn.graphics.drawRoundRect(0, 0, 40, 40, 5, 5);
                numBtn.graphics.endFill();
                numBtn.buttonMode = true;
                numBtn.x = (i % 3) * 50;
                numBtn.y = 50 + Math.floor(i / 3) * 50;

                var numText:TextField = new TextField();
                numText.text = String(i);
                numText.width = 40;
                numText.height = 40;
                numText.selectable = false;
                numText.mouseEnabled = false;
                numText.textAlign = TextFieldAutoSize.CENTER;
                numText.verticalAlign = TextFieldAutoSize.CENTER;
                numBtn.addChild(numText);

                numBtn.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
                    var btn:Sprite = Sprite(event.currentTarget);
                    var textField:TextField = TextField(btn.getChildAt(0));
                    handleNumberInput(textField.text);
                });

                addChild(numBtn);
            }

            // Operation buttons
            var operations:Array = ["+", "-", "*", "/", "="];
            for (var j:int = 0; j < operations.length; j++) {
                var opBtn:Sprite = new Sprite();
                opBtn.graphics.beginFill(0x9999FF);
                opBtn.graphics.drawRoundRect(0, 0, 40, 40, 5, 5);
                opBtn.graphics.endFill();
                opBtn.buttonMode = true;
                opBtn.x = 150;
                opBtn.y = 50 + j * 50;

                var opText:TextField = new TextField();
                opText.text = operations[j];
                opText.width = 40;
                opText.height = 40;
                opText.selectable = false;
                opText.mouseEnabled = false;
                opText.textAlign = TextFieldAutoSize.CENTER;
                opText.verticalAlign = TextFieldAutoSize.CENTER;
                opBtn.addChild(opText);

                opBtn.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
                    var btn:Sprite = Sprite(event.currentTarget);
                    var textField:TextField = TextField(btn.getChildAt(0));
                    handleOperation(textField.text);
                });

                addChild(opBtn);
            }
        }

        private function handleNumberInput(num:String):void {
            if (isNewInput) {
                inputField.text = num;
                isNewInput = false;
            } else {
                inputField.text += num;
            }
        }

        private function handleOperation(op:String):void {
            if (op == "=") {
                calculateResult();
            } else {
                currentValue = Number(inputField.text);
                currentOperation = op;
                isNewInput = true;
            }
        }

        private function calculateResult():void {
            var secondValue:Number = Number(inputField.text);
            var result:Number = 0;

            switch (currentOperation) {
                case "+":
                    result = currentValue + secondValue;
                    break;
                case "-":
                    result = currentValue - secondValue;
                    break;
                case "*":
                    result = currentValue * secondValue;
                    break;
                case "/":
                    result = currentValue / secondValue;
                    break;
            }

            inputField.text = String(result);
            isNewInput = true;
        }
    }
}

This basic calculator handles simple arithmetic operations. The code creates a text field for input and displays number and operation buttons. When a number is clicked, it's added to the input field. When an operation is clicked, the current value is stored, and the next number input will start fresh. The equals button performs the calculation.

Advanced Calculator Features

To enhance your ActionScript 3.0 calculator, consider adding these features:

  • Memory functions - Add buttons for memory storage, recall, and clear
  • Scientific operations - Include trigonometric, logarithmic, and exponential functions
  • History display - Show a list of previous calculations
  • Error handling - Display messages for invalid operations (like division by zero)
  • Custom styling - Improve the visual appearance with better graphics and layouts

Note

Advanced features require more complex ActionScript code and may impact performance. Test thoroughly in different Flash Player versions.

Formula and Implementation

The basic calculator follows standard arithmetic operations with these formulas:

Calculation Formulas

Addition: result = value1 + value2

Subtraction: result = value1 - value2

Multiplication: result = value1 * value2

Division: result = value1 / value2

The implementation uses event listeners to detect button clicks and updates the display accordingly. The calculator maintains state with variables for the current value, operation, and whether a new input is being entered.

Worked Example

Let's walk through a calculation using the basic calculator:

  1. User clicks "5" - Display shows "5"
  2. User clicks "+" - Calculator stores 5 as currentValue and sets currentOperation to "+"
  3. User clicks "3" - Display shows "3"
  4. User clicks "=" - Calculator performs 5 + 3 and displays "8"

This demonstrates the calculator's basic functionality. More complex operations follow the same pattern of storing values and operations until the equals button is pressed.

FAQ

Can I use ActionScript 3.0 calculators in modern browsers?

ActionScript 3.0 calculators require Adobe Flash Player, which is no longer supported in modern browsers. For web use, consider converting to JavaScript or using HTML5 canvas.

How do I add decimal points to my calculator?

Add a decimal button that appends a "." to the current input, checking to ensure only one decimal point exists in the number.

Can I make the calculator display larger numbers?

Yes, adjust the text field's width and font size properties to accommodate larger numbers. Consider adding scientific notation for very large values.

How do I handle division by zero errors?

Check for division by zero before performing the operation and display an error message like "Cannot divide by zero" instead of attempting the calculation.