For my calculator i am still able to choose an operator before i click on a number. I would like to disable that. This is how i have implemented it but it doesn’t seem to work:
var currentNumber:String="";
function pressNumber(e:MouseEvent):void {
display_txt.appendText(e.currentTarget.num);
if (operatorSelected) {
opBtn.mouseEnabled = true;//DISABLE HERE
num2S+=e.currentTarget.num;
num2=Number(num2S);
} else {
num1S+=e.currentTarget.num;
num1=Number(num1S);
}
}
This is the rest of my code as follows:
import flash.events.MouseEvent;
var btn:Array = new Array();
for (var i = 0; i < 10; i++) {
var myBtn:Btn = new Btn();
myBtn.y = 15;
myBtn.x = i * 100 + 15;
myBtn.width = 48;
myBtn.height = 48;
myBtn.buttonMode=true;
myBtn.mouseChildren=false;
myBtn.num=Number(i);
myBtn.caption.text=String(i);
addChild(myBtn);
btn.push(myBtn);
myBtn.addEventListener(MouseEvent.CLICK,pressNumber);
}
//EVENT TO ADD NUMBERS TO DISPLAY ;
btn[0].y += 370;
btn[0].x += 10;
btn[1].y += 310;
btn[1].x += -90;
btn[2].y += 310;
btn[2].x += -130;
btn[3].y += 310;
btn[3].x += -170;
btn[4].y += 250;
btn[4].x += -390;
btn[5].y += 250;
btn[5].x += -430;
btn[6].y += 250;
btn[6].x += -470;
btn[7].y += 190;
btn[7].x += -690;
btn[8].y += 190;
btn[8].x += -730;
btn[9].y += 190;
btn[9].x += -770;
//OPERATORS//
//OPERATORS//
var operatorSelected:Boolean;
var operate:Array=new Array("÷","x","-","+");
var operators:Array = new Array();
for (var io:int = 0; io < 4; io++) {
var opBtn:Btn_operator = new Btn_operator();
opBtn.width = 48;
opBtn.height = 48;
opBtn.buttonMode=true;
opBtn.mouseChildren=false;
opBtn.op=Number(operators);
addChild(opBtn);
operators.push(opBtn);
opBtn.addEventListener(MouseEvent.CLICK, pressOperator);
}
//EVENT TO ADD OPERATORS TO DISPLAY;
operators[0].y += 383;
operators[0].x += 198;
operators[0].caption_op.text = String("/");
operators[1].y += 323;
operators[1].x += 198;
operators[1].caption_op.text = String("*");
operators[2].y += 263;
operators[2].x += 198;
operators[2].caption_op.text = String("-");
operators[3].y += 203;
operators[3].x += 198;
operators[3].caption_op.text = String("+");
/*operators[4].y += 263;
operators[4].x += 256;
operators[4].caption_op.text = String("-/+");*/
//ADD DOT
var dot:Btn_dot = new Btn_dot();
dot.width = 48;
dot.height = 48;
dot.buttonMode = true;
dot.mouseChildren = false;
dot.caption_op.text = String (".");
addChild(dot);
dot.y += 383;
dot.x += 78;
dot.addEventListener(MouseEvent.CLICK, addDot);//EVENT TO ADD DOT TO DISPLAY
//BACKSPACE
var goBack:Btn_backspace = new Btn_backspace();
goBack.width = 48;
goBack.height = 48;
goBack.buttonMode = true;
goBack.mouseChildren = false;
goBack.caption_op.text = String ("<--");
addChild(goBack);
goBack.y += 203;
goBack.x += 256;
goBack.addEventListener(MouseEvent.CLICK, backSpace);//EVENT TO GO BACK SPACE IN DISPLAY
//clearAll
var clearAll:Btn_clear = new Btn_clear();
clearAll.width = 48;
clearAll.height = 48;
clearAll.buttonMode = true;
clearAll.mouseChildren = false;
clearAll.caption_op.text = String ("C");
addChild(clearAll);
clearAll.y += 323;
clearAll.x += 256;
clearAll.addEventListener(MouseEvent.CLICK, clearFields);//EVENT TO GO BACK SPACE IN DISPLAY
//EQUALS
var equals:Btn_equals = new Btn_equals();
equals.width = 48;
equals.height = 48;
equals.buttonMode=true;
equals.mouseChildren=false;
equals.caption_op.text=String("=");
addChild(equals);
equals.y += 383;
equals.x += 138;
equals.addEventListener(MouseEvent.CLICK, performEquals);
//EVENT TO CALCULATE
//VARIABLE HANDLE OPERATION NOT BUTTON
var operates:String;
//HANDLE FIRST AND SECOND VALUE
var num1:Number;
var num2:Number;
var num1S:String="";
var num2S:String="";
var currentNumber:String="";
function pressNumber(e:MouseEvent):void {
display_txt.appendText(e.currentTarget.num);
if (operatorSelected) {
opBtn.mouseEnabled = true;
num2S+=e.currentTarget.num;
num2=Number(num2S);
} else {
num1S+=e.currentTarget.num;
num1=Number(num1S);
}
}
//DISPLAY OPERATORS
function pressOperator(event:MouseEvent):void {
operatorSelected = true;
operates=operate[operators.indexOf(event.target)];
display_txt.appendText(operate[operators.indexOf(event.target)]);
trace(operate[operators.indexOf(event.target)]);
}
//CLEARS DISPLAY AREA
function clearFields(event:MouseEvent):void{
display_txt.text = "";
answer_txt.text = "";
num1=NaN;
num2=NaN;
}
//ADDS DECIMAL PLACE
function addDot(event:MouseEvent):void{
if(event.currentTarget.num == Number(display_txt.text))
{
display_txt.text = "0";
}
if (display_txt.text.indexOf(".")==-1){
display_txt.appendText(".");
}
}
//BACKSPACE DISPLAY AREA
function backSpace(e:MouseEvent):void{
var temp_str:String = display_txt.text;
display_txt.text = temp_str.substr(0, (temp_str.length-1)); // Get rid of last character in the string, which in this case is the phantom \r or
character
}
var devideZero:Boolean;
function performCalculation():void {
operatorSelected = false;
switch (operates) {
case "÷" :
if(num2 != 0) {
num1 /= num2;
}else{
answer_txt.text = "Cannot devide by zero";
devideZero = true;
}
break;
case "x" :
num1*=num2;
break;
case "-" :
num1-=num2;
break;
case "+" :
num1+=num2;
break;
default :
break;
}
}
function performEquals(e:MouseEvent):void {
num1S="";
num2S="";
performCalculation();
answer_txt.text=num1.toPrecision(2);
trace(num1.toPrecision(2));//traces
if(!devideZero){
answer_txt.text=String(num1);
}
num2 = NaN;
}