我正在尝试使用用户交互构建二叉树程序。用户可以输入数字。二进制树将以图形方式构建。第一个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);
}
}
答案 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
的值为true
时check
为true
,所以它等同于check
。