<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:Script>
<![CDATA[
private var savedNumber:Number = 0;
private var currentNumber:Number = 0;
private var lastAction:String;
private var clearAfterAction:Boolean = false;
private function clearInput():void{
calcInputText.text = "0";
currentNumber = savedNumber = 0;
lastAction = "";
}
private function inputNumber(num:String):void{
if(clearAfterAction == true){
calcInputText.text = "";
clearAfterAction = false;
}
if(calcInputText.text == "0" || calcInputText.text == ""){
calcInputText.text = num;
}else{
calcInputText.text += num;
}
}
private function setAction(action:String):void{
clearAfterAction = true;
if(action == "sum"){
calculate();
}else{
lastAction = action;
calculate();
}
}
private function calculate():void{
savedNumber = new Number(calcInputText.text);
if(lastAction == "add"){
currentNumber = currentNumber + savedNumber;
calcInputText.text = currentNumber.toString();
}else if(lastAction == "subtract"){
currentNumber = currentNumber - savedNumber;
calcInputText.text = currentNumber.toString();
}else if(lastAction == "divide"){
if(currentNumber != 0){
currentNumber = currentNumber / savedNumber;
calcInputText.text = currentNumber.toString();
}else{
currentNumber = savedNumber;
calcInputText.text = currentNumber.toString();
}
}else if(lastAction == "multiply"){
if(currentNumber != 0){
currentNumber = currentNumber * savedNumber;
calcInputText.text = currentNumber.toString();
}else{
currentNumber = savedNumber;
calcInputText.text = currentNumber.toString();
}
}
}
]]>
</mx:Script>
<mx:Panel width="250" height="240" layout="absolute" title="Flex Calculator">
<mx:TextInput right="10" left="10" top="10" text="0" textAlign="right" id="calcInputText" editable="false"/>
<mx:Button y="40" label="/" width="40" right="15" id="divideButton" click="setAction('divide')"/>
<mx:Button y="40" label="C" width="30" left="15" id="clearButton" click="clearInput()"/>
<mx:Button y="70" label="CE" width="30" left="15" id="ceButton" click="clearInput()"/>
<mx:Button y="70" label="*" width="40" right="15" id="multiplyButton" click="setAction('multiply')"/>
<mx:Button y="100" label="+" width="40" right="15" id="addButton" click="setAction('add')"/>
<mx:Button y="128" label="-" width="40" right="15" id="subtractButton" click="setAction('subtract')"/>
<mx:Button y="158" label="=" width="100" right="15" id="equalsButton" click="setAction('sum')"/>
<mx:Button y="40" label="3" width="30" x="135" id="threeButton" click="inputNumber('3')"/>
<mx:Button y="70" label="6" width="30" x="135" id="sixButton" click="inputNumber('6')"/>
<mx:Button y="100" label="9" width="30" x="135" id="nineButton" click="inputNumber('9')"/>
<mx:Button y="40" label="2" width="30" x="95" id="twoButton" click="inputNumber('2')"/>
<mx:Button y="70" label="5" width="30" x="95" id="fiveButton" click="inputNumber('5')"/>
<mx:Button y="100" label="8" width="30" x="95" id="eightButton" click="inputNumber('8')"/>
<mx:Button y="128" label="." width="30" x="95" id="decimalButton" click="inputNumber('.')"/>
<mx:Button y="128" width="30" x="135"/>
<mx:Button y="40" label="1" width="30" x="55" id="oneButton" click="inputNumber('1')"/>
<mx:Button y="70" label="4" width="30" x="55" id="fourButton" click="inputNumber('4')"/>
<mx:Button y="100" label="7" width="30" x="55" id="sevenButton" click="inputNumber('7')"/>
<mx:Button y="128" label="0" width="30" x="55" id="zeroButton" click="inputNumber('0')"/>
<mx:Label x="10" y="182" text="Flex Calculator by Graeme Bull" color="#c0c0c0"/>
</mx:Panel>
</mx:Application>