我在as3和flash创建一个简单的计算器



我正在创建一个简单的计算器在行动脚本3.0和Flash。下面是我的代码。我无法得到结果,虽然它正确运行直到trace("calculating"+operator); ,但不显示结果。为什么?如果我做错了,请建议我写代码。

   import flash.events.MouseEvent;
_1.addEventListener(MouseEvent.CLICK, inputvalues)
_2.addEventListener(MouseEvent.CLICK, inputvalues)
_3.addEventListener(MouseEvent.CLICK, inputvalues)
_4.addEventListener(MouseEvent.CLICK, inputvalues)
_5.addEventListener(MouseEvent.CLICK, inputvalues)
_6.addEventListener(MouseEvent.CLICK, inputvalues)
_7.addEventListener(MouseEvent.CLICK, inputvalues)
_8.addEventListener(MouseEvent.CLICK, inputvalues)
_9.addEventListener(MouseEvent.CLICK, inputvalues)
_0.addEventListener(MouseEvent.CLICK, inputvalues)
_add.addEventListener(MouseEvent.CLICK, inputvalues)
_sub.addEventListener(MouseEvent.CLICK, inputvalues)
_div.addEventListener(MouseEvent.CLICK, inputvalues)
_mul.addEventListener(MouseEvent.CLICK, inputvalues)
_equal.addEventListener(MouseEvent.CLICK, inputvalues)
_dot.addEventListener(MouseEvent.CLICK, addDot);
_clear.addEventListener(MouseEvent.CLICK, clearscr);
var operator: String = "";
var value1: Number;
var value2: Number;
function inputvalues(e: MouseEvent): void {
        var valuestring: String = e.currentTarget.name
        valuestring = valuestring.substr(1);

        if (valuestring.length > 1) {
            operator = valuestring
            if (operator != "equal") {
                value1 = Number(this.display_txt.text)
                this.display_txt.text = "";
            }else{
                value2 = Number(this.display_txt.text)
                calculatevalue();
                }
        } else {
            this.display_txt.text = this.display_txt.text +valuestring;
        }
    }
    function calculatevalue() {
        trace("calculating"+operator);
        if (operator=="add")
        {
            this.display_txt.text = String(value1+value2);}
        }
    function clearscr(event:MouseEvent):void
      {
            display_txt.text="";
      }
     function addDot(event:MouseEvent):void
      {
        if (value1 == Number(display_txt.text))
       {
            display_txt.text = "0";
       }
         if (display_txt.text.indexOf(".") == -1)
       {
            display_txt.appendText(".");
       }
      }

你有一些代码已经存在于你在这里展示的相同类型的脚本中。

import flash.events.MouseEvent;
var currentNumber:Number = 0;
var memoryNumber:String="";
var operator:String = "";
input_0.addEventListener(MouseEvent.CLICK, numberPushed);
input_1.addEventListener(MouseEvent.CLICK, numberPushed);
input_2.addEventListener(MouseEvent.CLICK, numberPushed);
input_3.addEventListener(MouseEvent.CLICK, numberPushed);
input_4.addEventListener(MouseEvent.CLICK, numberPushed);
input_5.addEventListener(MouseEvent.CLICK, numberPushed);
input_6.addEventListener(MouseEvent.CLICK, numberPushed);
input_7.addEventListener(MouseEvent.CLICK, numberPushed);
input_8.addEventListener(MouseEvent.CLICK, numberPushed);
input_9.addEventListener(MouseEvent.CLICK, numberPushed);
action_point.addEventListener(MouseEvent.CLICK, buttonPushed);
action_equals.addEventListener(MouseEvent.CLICK, buttonPushed);
action_divide.addEventListener(MouseEvent.CLICK, buttonPushed);
action_multiply.addEventListener(MouseEvent.CLICK, buttonPushed);
action_subtract.addEventListener(MouseEvent.CLICK, buttonPushed);
action_add.addEventListener(MouseEvent.CLICK, buttonPushed);
action_clear.addEventListener(MouseEvent.CLICK, buttonPushed);
action_clearall.addEventListener(MouseEvent.CLICK, buttonPushed);
function sum(operator):void{
    var total:Number
    switch(operator){
        case "-":
        total = Number(memoryNumber) - Number(currentNumber);
        break;
        case "+":
        total = Number(memoryNumber) + Number(currentNumber);
        break;
        case "/":
        total = Number(memoryNumber) / Number(currentNumber);
        break;
        case "*":
        total = Number(memoryNumber) * Number(currentNumber);
        break;
    }
    displayTxt.text = total;
    currentNumber = Number(displayTxt.text);
    operator=""
    memoryNumber=""
}
function buttonPushed(m:MouseEvent):void{
    if(m.currentTarget.name=="action_point"){
        displayTxt.appendText(".")
        action_point.removeEventListener(MouseEvent.CLICK, buttonPushed);
    }else if(m.currentTarget.name=="action_equals"){
        if(operator!=""){
            sum(operator)
        }
    }else{
        var whichOne:String = m.currentTarget.name;
        memoryNumber=currentNumber;
        displayTxt.text = "";
        switch(whichOne){
            case "action_divide":
            operator="/"
            break;
            case "action_multiply":
            operator="*"
            break;
            case "action_subtract":
            operator="-"
            break;
            case "action_add":
            operator="+"
            break;
            case "action_clear":
            currentNumber= 0;
            break;
            case "action_clearall":
            currentNumber= 0;
            memoryNumber="";
            break;
        }
    }
}
function numberPushed(m:MouseEvent):void{
    if(m.currentTarget.name.slice(-1)==0){
        if(currentNumber>0 ){
            displayTxt.appendText(m.currentTarget.name.slice(-1));
        }
    }else{
        displayTxt.appendText(m.currentTarget.name.slice(-1));
    }
    currentNumber = Number(displayTxt.text);
}  

最新更新