计算器

来源:互联网 发布:幻影2000 台湾 知乎 编辑:程序博客网 时间:2024/04/29 19:13

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" fontSize="12" creationComplete="init();">
 <mx:Script>
  <![CDATA[
   import mx.utils.StringUtil;
   private var hasclickfloat:Boolean=false;
   private var hasover:Boolean=false;
   private var num:Number=0;
   private var cal:String;
   private function init():void{
    result.text="0";
    hasclickfloat=false;
    
   }
   private function addnum(str:String):void{
    if(result.text=="0")
    {
     result.text=str;
    }
    else if(result.text=="NaN"){
     result.text=str;
    }
    else if(hasover==true){
     result.text=str;
     hasover=false;
    }
    else{
     if(result.text.length<=9){
      result.text=result.text+str;
     }else {
      init();
      addnum(str);
     }
    }
    
   }
   private function add(str1:String,str2:String):void{
    num=Number(str1);
    hasclickfloat=false;
    cal=str2;
    init();
   }
   private function genhao(str:String):void{
    hasclickfloat=false;
    if(str==null){
     result.text="";
    }
    else if(str=="NaN"){
     result.text="NaN";
    }
    else {
     result.text=String(Math.sqrt(Number(str)));
    }
   }
   private function pingfang(str:String):void{
    hasclickfloat=false;
    if(str==null){
     result.text="";
    }
    else if(str=="NaN"){
     result.text="NaN";
    }
    else {
     result.text=String(Number(str)*Number(str));
    }
   }
   private function fanshu(str:String):void{
    hasclickfloat=false;
    if(str=="0"||str==".0"){
     result.text="NaN";
    }
    else {
     result.text=String(1/Number(str));
    }
   }
   private function txtnum(str:String):void{
    
   }
   private function addfloat():void{
    if(hasclickfloat==false){
     addnum(".");
     hasclickfloat=true; 
    }
    else {
     return ;
    }
   }
   private function addfuhao(str1:String,str2:String):void{
    if(str1=="0"){
     result.text="-";
     return ;
    }
    num=Number(str1);
    hasclickfloat=false;
    cal=str2;
    init();
    
   }
   private function docal(str:String):void{
    if(cal=="+"){
     result.text=String(num+Number(str));
     hasover=true;
    }
    else if(cal=="-"){
     result.text=String(num-Number(str));
     hasover=true;
    }
    else if(cal=="*"){
     result.text=String(num*Number(str));
     hasover=true;
    }
    else if(cal=="/"){
     if(str=="0"||str==".0"){
      result.text="NaN";
      hasover=true;
     }
     else {
      result.text=String(num/Number(str));
      hasover=true
     }
    }
    else {
     return;
    }
   }
  ]]>
 </mx:Script>
 <mx:Panel id="Calculate" x="134.5" y="51" width="220" height="264" layout="absolute" title="计算器" >
  <mx:TextInput x="10" y="10" width="180" id="result" textAlign="right" backgroundColor="#F4DA7F" enter="docal(result.text)"/>
  <mx:VBox x="10" y="38" height="180" width="180" verticalGap="5">
   <mx:HBox width="100%" height="30" horizontalGap="4" paddingLeft="4">
    <mx:Button width="40" label="S" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #11FFFF, #FF33FF]" cornerRadius="0" click="genhao(result.text);"/>
    <mx:Button label="G" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #1FF3FF, #7FFF1F]" cornerRadius="0" click="pingfang(result.text);"/>
    <mx:Button width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #FF0F4F, #FFF9F0]" cornerRadius="0" label="N" click="fanshu(result.text);"/>
    <mx:Button label="C" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F4F2F, #1FFF0F]" cornerRadius="0" click="init();"/>
   </mx:HBox>
   <mx:HBox width="100%" height="30">
    <mx:HBox width="100%" height="30">
     <mx:HBox width="100%" height="30" horizontalGap="4" paddingLeft="4">
      <mx:Button id="bt1" label="1" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #0FFFF1, #5FFAFF]" cornerRadius="0" click="addnum(bt1.label);"/>
      <mx:Button id="bt2" label="2" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #1FFF5F, #F7FFF2]" cornerRadius="0" click="addnum(bt2.label);"/>
      <mx:Button label="3" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F6FFFB, #FB7FFF]" cornerRadius="0" id="bt3" click="addnum(bt3.label);"/>
      <mx:Button label="=" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #FBFF3F, #FFBFF9]" cornerRadius="0" click="docal(result.text);"/>
     </mx:HBox>
    </mx:HBox>
   </mx:HBox>
   <mx:HBox width="100%" height="30" horizontalGap="4" paddingLeft="4">
    <mx:Button label="4" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #FFF000, #FF0000]" cornerRadius="0" id="bt4" click="addnum(bt4.label);"/>
    <mx:Button label="5" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #FF2F1F, #FF1FF2]" cornerRadius="0" id="bt5" click="addnum(bt5.label);"/>
    <mx:Button label="6" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #AFFFAF, #BFFFFB]" cornerRadius="0" id="bt6" click="addnum(bt6.label);"/>
    <mx:Button label="+" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #1F1FFF, #2FF2FF]" cornerRadius="0" click="add(result.text,idjia.label);" id="idjia"/>
   </mx:HBox>
   <mx:HBox width="100%" height="30" horizontalGap="4" paddingLeft="4">
    <mx:Button label="7" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #11FFFF, #F99FFF]" cornerRadius="0" id="bt7" click="addnum(bt7.label);"/>
    <mx:Button label="8" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #121FFF, #F3333F]" cornerRadius="0" id="bt8" click="addnum(bt8.label);"/>
    <mx:Button label="9" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #1FFF30, #FFFFFF]" cornerRadius="0" id="bt9" click="addnum(bt9.label);"/>
    <mx:Button label="-" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F1F9FF, #FFF021]" cornerRadius="0" click="addfuhao(result.text,idjian.label);" id="idjian"/>
   </mx:HBox>
   <mx:HBox width="100%" height="30" horizontalGap="4" paddingLeft="4">
    <mx:Button label="0" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #AAAAAF, #FBBBBB]" cornerRadius="0" id="bt0" click="addnum(bt0.label);"/>
    <mx:Button label="." width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F3333F, #F7777F]" cornerRadius="0" id="bt_float" click="addfloat();"/>
    <mx:Button label="/" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F7FF7F, #FF7F33]" cornerRadius="0" click="add(result.text,idchu.label);" id="idchu"/>
    <mx:Button label="*" width="40" fillAlphas="[1.0, 1.0, 1.0, 1.0]" fillColors="[#5F5F58, #CCCCCC, #F33FFF, #66FFFF]" cornerRadius="0" click="add(result.text,idcheng.label);" id="idcheng"/>
   </mx:HBox>
  </mx:VBox>
 </mx:Panel>
 
</mx:Application>