我正在制作一个带有动态文本框的计算器,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();
}
答案 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';