做的比较简单,参考Flex中文里面的简单计算器设计,加了小数点位数判断及除数为0的判断,SWF文件见附件。
源码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
private var operator:String = ""; //操作符
private var num1:String = "";
private var num2:String = "";
//添加监听
private function init():void{
bt0.addEventListener(MouseEvent.CLICK,buttonDis);
bt1.addEventListener(MouseEvent.CLICK,buttonDis);
bt2.addEventListener(MouseEvent.CLICK,buttonDis);
bt3.addEventListener(MouseEvent.CLICK,buttonDis);
bt4.addEventListener(MouseEvent.CLICK,buttonDis);
bt5.addEventListener(MouseEvent.CLICK,buttonDis);
bt6.addEventListener(MouseEvent.CLICK,buttonDis);
bt7.addEventListener(MouseEvent.CLICK,buttonDis);
bt8.addEventListener(MouseEvent.CLICK,buttonDis);
bt9.addEventListener(MouseEvent.CLICK,buttonDis);
bt10.addEventListener(MouseEvent.CLICK,buttonDis);
btadd.addEventListener(MouseEvent.CLICK,operatorHandle);
btdec.addEventListener(MouseEvent.CLICK,operatorHandle);
btdiv.addEventListener(MouseEvent.CLICK,operatorHandle);
btmul.addEventListener(MouseEvent.CLICK,operatorHandle);
btequ.addEventListener(MouseEvent.CLICK,equalHandle);
btclear.addEventListener(MouseEvent.CLICK,textClear);
}
//显示按钮输入的值
private function buttonDis(e:MouseEvent):void{
var showNum:String = "";
//小数点的情况
if(txtResult.text.split(".").length == 3){
txtResult.text = "重复输入小数点,请清空后重新计算";
return;
}
showNum += e.target.label;
if(operator == ""){
num1 += showNum;
txtResult.text = num1;
} else {
num2 += showNum;
txtResult.text = num2;
}
}
//文本框清空
private function textClear(e:MouseEvent):void{
txtResult.text = "";
num1 = "";
num2 = "";
}
//输入运算符
private function operatorHandle(e:MouseEvent):void{
operator = e.target.label;
if(num1 != "" && num2 != "" && operator != ""){
txtResult.text = calculateResult();
}
}
//计算结果
private function calculateResult():String{
var result:String = "0";
switch(operator){
case "/":
if(num2 == '0'){
result = "除数不能为0";
break;
}
result =(Number(num1) / Number(num2)).toString(); //除法运算
break;
case "*":
result = (Number(num1) * Number(num2)).toString(); //乘法运算
break;
case "+":
result = (Number(num1) + Number(num2)).toString(); //加法运算
break;
case "-":
result = (Number(num1) - Number(num2)).toString(); //减法运算
break;
default:
break;
}
return result;
}
//输出计算结果
private function equalHandle(e:MouseEvent):void{
if(num1 != "" && num2 != "" && operator != "") //判断变量是否为空
{
var result:String = calculateResult();
txtResult.text = result; //设置 txtResult 文本控件的内容为计算的结果
operator = ""; //清空操作符,以继续下一次运算
num1 = result; //获取第一个操作数
num2 = ""; //清空第二个操作数
}
}
]]>
</mx:Script>
<mx:Panel x="73" y="60" width="303" height="350" layout="absolute" title="简易计算器" fontFamily="Times New Roman" fontSize="20">
<mx:TextInput x="40" y="10" width="190" id="txtResult"/>
<mx:Button x="40" y="60" label="7" id="bt7"/>
<mx:Button x="90" y="60" label="8" id="bt8"/>
<mx:Button x="140" y="60" label="9" id="bt9"/>
<mx:Button x="190" y="60" label="/" id="btdiv"/>
<mx:Button x="90" y="110" label="5" id="bt5"/>
<mx:Button x="140" y="110" label="6" id="bt6"/>
<mx:Button x="190" y="110" label="*" id="btmul"/>
<mx:Button x="40" y="160" label="1" id="bt1"/>
<mx:Button x="90" y="160" label="2" id="bt2"/>
<mx:Button x="140" y="160" label="3" id="bt3"/>
<mx:Button x="190" y="160" label="+" id="btadd"/>
<mx:Button x="40" y="210" label="0" id="bt0"/>
<mx:Button x="90" y="210" label="." id="bt10"/>
<mx:Button x="140" y="210" label="=" id="btequ"/>
<mx:Button x="190" y="210" label="-" id="btdec"/>
<mx:Button x="40" y="110" label="4" id="bt4"/>
<mx:Button x="40" y="251" label="Clear" id="btclear"/>
</mx:Panel>
</mx:Application>
源码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
private var operator:String = ""; //操作符
private var num1:String = "";
private var num2:String = "";
//添加监听
private function init():void{
bt0.addEventListener(MouseEvent.CLICK,buttonDis);
bt1.addEventListener(MouseEvent.CLICK,buttonDis);
bt2.addEventListener(MouseEvent.CLICK,buttonDis);
bt3.addEventListener(MouseEvent.CLICK,buttonDis);
bt4.addEventListener(MouseEvent.CLICK,buttonDis);
bt5.addEventListener(MouseEvent.CLICK,buttonDis);
bt6.addEventListener(MouseEvent.CLICK,buttonDis);
bt7.addEventListener(MouseEvent.CLICK,buttonDis);
bt8.addEventListener(MouseEvent.CLICK,buttonDis);
bt9.addEventListener(MouseEvent.CLICK,buttonDis);
bt10.addEventListener(MouseEvent.CLICK,buttonDis);
btadd.addEventListener(MouseEvent.CLICK,operatorHandle);
btdec.addEventListener(MouseEvent.CLICK,operatorHandle);
btdiv.addEventListener(MouseEvent.CLICK,operatorHandle);
btmul.addEventListener(MouseEvent.CLICK,operatorHandle);
btequ.addEventListener(MouseEvent.CLICK,equalHandle);
btclear.addEventListener(MouseEvent.CLICK,textClear);
}
//显示按钮输入的值
private function buttonDis(e:MouseEvent):void{
var showNum:String = "";
//小数点的情况
if(txtResult.text.split(".").length == 3){
txtResult.text = "重复输入小数点,请清空后重新计算";
return;
}
showNum += e.target.label;
if(operator == ""){
num1 += showNum;
txtResult.text = num1;
} else {
num2 += showNum;
txtResult.text = num2;
}
}
//文本框清空
private function textClear(e:MouseEvent):void{
txtResult.text = "";
num1 = "";
num2 = "";
}
//输入运算符
private function operatorHandle(e:MouseEvent):void{
operator = e.target.label;
if(num1 != "" && num2 != "" && operator != ""){
txtResult.text = calculateResult();
}
}
//计算结果
private function calculateResult():String{
var result:String = "0";
switch(operator){
case "/":
if(num2 == '0'){
result = "除数不能为0";
break;
}
result =(Number(num1) / Number(num2)).toString(); //除法运算
break;
case "*":
result = (Number(num1) * Number(num2)).toString(); //乘法运算
break;
case "+":
result = (Number(num1) + Number(num2)).toString(); //加法运算
break;
case "-":
result = (Number(num1) - Number(num2)).toString(); //减法运算
break;
default:
break;
}
return result;
}
//输出计算结果
private function equalHandle(e:MouseEvent):void{
if(num1 != "" && num2 != "" && operator != "") //判断变量是否为空
{
var result:String = calculateResult();
txtResult.text = result; //设置 txtResult 文本控件的内容为计算的结果
operator = ""; //清空操作符,以继续下一次运算
num1 = result; //获取第一个操作数
num2 = ""; //清空第二个操作数
}
}
]]>
</mx:Script>
<mx:Panel x="73" y="60" width="303" height="350" layout="absolute" title="简易计算器" fontFamily="Times New Roman" fontSize="20">
<mx:TextInput x="40" y="10" width="190" id="txtResult"/>
<mx:Button x="40" y="60" label="7" id="bt7"/>
<mx:Button x="90" y="60" label="8" id="bt8"/>
<mx:Button x="140" y="60" label="9" id="bt9"/>
<mx:Button x="190" y="60" label="/" id="btdiv"/>
<mx:Button x="90" y="110" label="5" id="bt5"/>
<mx:Button x="140" y="110" label="6" id="bt6"/>
<mx:Button x="190" y="110" label="*" id="btmul"/>
<mx:Button x="40" y="160" label="1" id="bt1"/>
<mx:Button x="90" y="160" label="2" id="bt2"/>
<mx:Button x="140" y="160" label="3" id="bt3"/>
<mx:Button x="190" y="160" label="+" id="btadd"/>
<mx:Button x="40" y="210" label="0" id="bt0"/>
<mx:Button x="90" y="210" label="." id="bt10"/>
<mx:Button x="140" y="210" label="=" id="btequ"/>
<mx:Button x="190" y="210" label="-" id="btdec"/>
<mx:Button x="40" y="110" label="4" id="bt4"/>
<mx:Button x="40" y="251" label="Clear" id="btclear"/>
</mx:Panel>
</mx:Application>