-1

我正在尝试构建一个带有用户交互的二叉树程序。用户可以输入数字。二叉树将以图形方式构建。第一个 if 条件的目的是不允许用户输入相同的数字两次。但它不工作

input_num.restrict="0-9";
input_num.maxChars = 3;

AddButton.addEventListener(MouseEvent.CLICK,clicked);

function clicked(event_object:MouseEvent) 
{
    var check:Boolean;
    check==false;

    if(check==true)
        {
        output_text.text="works"
        }
    else if(input_num.text=="")
        {
        output_text.text="Field can not be empty"
        }
    else
        {
        output_text.text=""
        var number=Number(input_num.text);
        output_text.text="You entered "+number+""
        check==true;

        var root=number;

        var newCircle:Shape = new Shape();
        newCircle.graphics.lineStyle(4, 0x6D00D9);
        newCircle.graphics.beginFill(0xff005E);
        newCircle.graphics.drawEllipse(x+225.9, y+68.0, 40, 40);
        newCircle.graphics.endFill();
        addChild(newCircle);

        var tf:TextField = new TextField();
        var style:TextFormat = new TextFormat();
        style.bold=true;
        style.size=24;
        style.color=0xFFFF33;
        tf.text = root.toString();
        tf.x = x+236.9;
        tf.y = y+73.0;
        addChild(tf);
        tf.setTextFormat(style);
        }
}
4

3 回答 3

2

首先,正如 Tezirg 指出的那样,您需要在函数check 之外创建变量。通过在函数中创建它,它的范围被限制在函数中,当函数完成时它不再存在。check您在第二次运行该函数时看到的是一个不同变量。您可以在此处阅读有关函数范围的更多信息。

第二,

check==true;

是比较,而不是分配,所以它没有做任何事情。你需要:

check = true;
于 2013-02-23T20:16:39.290 回答
1

每次调用您的方法时,都会重新构建范围内的变量,因此当第一个条件使用时,您的 check var 确实总是错误的。我不知道动作脚本,但我猜你的搜索是一个“静态变量”。

于 2013-02-23T19:42:22.227 回答
0

如前所述,check如果您希望它在每次调用时保持其值,请不要在函数中定义您的变量。

那么你应该更换

var check:Boolean;
check==false;

经过

var check:Boolean = false;

分配一个值check(与check == true大卫米尔指出的相同)。而且

if ( check==true )

是正确的,但你可以写

if (check)

因为check == trueistrue当 的值为check...true所以它等价于check

于 2013-02-25T14:08:23.507 回答