第一个" if条件"不起作用。请帮忙?

时间:2013-02-23 19:37:50

标签: flash actionscript

我正在尝试使用用户交互构建二叉树程序。用户可以输入数字。二进制树将以图形方式构建。第一个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);
        }
}

3 个答案:

答案 0 :(得分:2)

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

其次,

check==true;

是比较,而不是作业,因此它不做任何事情。你需要:

check = true;

答案 1 :(得分:1)

每次调用方法时,范围中的变量都会重新构建,因此当第一个条件使用check var时,它确实总是为false。 我不知道动作脚本,但我想你的寻求是一个“静态变量”。

答案 2 :(得分:0)

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

然后你应该替换

var check:Boolean;
check==false;

通过

var check:Boolean = false;

check分配值(与David Mear指出的check == true相同)。此外

if ( check==true )

是正确的,但你可以写

if (check)

因为当check == true的值为truechecktrue,所以它等同于check