-1

ユーザーの操作でバイナリ ツリー プログラムを構築しようとしています。ユーザーは数値を入力できます。バイナリ ツリーはグラフィカルに構築されます。最初の if 条件の目的は、ユーザーが同じ数値を 2 回入力できないようにすることです。しかし、それは機能していません

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関数が 2 回目に実行されるのは、別変数です。関数スコープの詳細については、こちらを参照してください。

第二に、

check==true;

代入ではなく比較なので、何もしません。必要なもの:

check = true;
于 2013-02-23T20:16:39.290 に答える
1

メソッドが呼び出されるたびに、スコープ内の変数が再構築されるため、最初の条件で使用されると、チェック変数は常に false になります。アクションスクリプトについてはわかりませんが、あなたが求めているのは「静的変数」だと思います。

于 2013-02-23T19:42:22.227 に答える
0

check既に述べたように、各呼び出しで値を保持したい場合は、関数内で変数を定義しないでください。

それなら交換すればいい

var check:Boolean;
check==false;

var check:Boolean = false;

値を割り当てる( David Mearが指摘したcheckのと同じ)。check == trueさらに

if ( check==true )

正しいですが、書くことができます

if (check)

なぜならcheck == trueistrueの値checktrue… のときだから、 と同等checkです。

于 2013-02-25T14:08:23.507 に答える