如何在我的计算器中按下按钮显示在我的动态文本框中

时间:2014-08-06 06:05:17

标签: actionscript-3 flash

我正在制作一个带有动态文本框的计算器,0-9的按钮,以及+, - ,/,*,=和清除按钮。但出于某种原因,每当我按下计算器上的按钮时,它们就不会出现在我需要它的动态文本框中。我的问题具体是如何在按下我的计算器上的数字按钮时,数字显示在我的动态文本框中,就像一个合适的计算器。我将衷心感谢您的帮助。 这是我的代码:

import flash.events.MouseEvent;

var numbers:Array= [btnNum0,btnNum1,btnNum2,btnNum3,btnNum4,btnNum5,btnNum6,btnNum7,btnNum8,btnNum9];

var operations:Array = [btnAdd_,btnSubtract_,btnMultiply_,btnDivide_,btnEqual_,btnClear_];

var o:String;

var number1:Number;

var number2:Number;



function addListeners():void

{
for(var i:uint = 0; i < numbers.length; i++){
    numbers[i].addEventListener(MouseEvent.CLICK, pressNumber); 
}
for(i = 0; i < operations.length; i++){
    operations[i].addEventListener(MouseEvent.CLICK, pressOperations); 
}
btnClear.addEventListener(MouseEvent.CLICK, clearAll);
btnDot..addEventListener(MouseEvent.CLICK, addDot);

}

function pressNumber(event:MouseEvent): void
{

// find name of button pressed
var instanceName:String = event.target.name;
// get the number pressed fom the instanceName
var getNum = instanceName.charAt(6)

if(output.text == "0"){
    output.text = "";
}
output.appendText(getNum);
}



function pressOperations(event:MouseEvent): void
{

var instanceName:String = event.target.name;
var  currentOperator:String;


currentOperator = instanceName.slice(3,instanceName.indexOf("_"));
trace(currentOperator)
}

function clearAll(event:MouseEvent): void
{
output.text = "";
number1 = NaN;
number2 = NaN;
}

function addDot(event:MouseEvent): void
{
if(output.text.indexof(".") == -1){
    output.appendText(".");
}
output.text = "0";
addListeners();
}

3 个答案:

答案 0 :(得分:0)

要使用属性“name”,必须在创建实例后设置此属性。像这样:

var btnNum0:Button = new Button();
butNum0.name = "btnNum0";

如果你不这样做,“name”属性将为空,看起来像你的情况。

<强>更新

Helloflash在他的评论中是对的。我第一次没有看到,但在代码中出现的错误比我想象的要多。

首先,您需要将函数addDot()中的初始化代码推迟到代码的开头。现在,这个代码永远不会被调用,因为你试图将监听器添加到监听器addDot()。

output.text = "0";
addListeners();

同时将indexof更改为indexOf,并从语句btnDot..addEventListener(MouseEvent.CLICK, addDot);中删除多余的点。大建议/请求:在编写代码时使用一些格式规则(特别是关于括号)。您的代码将更加干净和可读。

答案 1 :(得分:0)

您不应尝试在实例名称中存储信息。使用存储在数组中的对象作为按钮。这就是你如何处理这样的事情。

使用存储在数组中的对象来处理按钮,创建新按钮并设置其属性的基本代码(存储有关实例中按钮的信息):

var aButtons:Array = new Array();var i: int = 0;
for (i = 0; i < 10; i++) {
  var mcButton: McButton = new McButton();
  mcButton.iButtonValue = i;
  mcButton.sButtonName = "Button Number " + i;
  aButtons.push(mcButton);
}

然后您可以通过

引用按钮
aButtons[i]
aButtons[i].iButtonValue

答案 2 :(得分:0)

您必须先在文本字段中设置值,因为appendText()方法无法将文字附加到空文本字段(不会显示任何内容)。

在您的代码开头:

output.text = '0';