2017-03-15 7 views
0

私はAS3でのコーディングで冒険を始めています。 ボタンをクリックして自分の入力を提出し、それが自分の「パスワード」番号と同じかどうかを確認する方法を学びたいと思います。次に、結果に関する動的フィールドにメッセージを表示します。 私はいくつかのコードを書きましたが、エラーは表示されませんが、あなたが推測しているように、どちらも動作しません。をクリックして入力を提出するAS3

私はコマンドを使用していると思った。 button.addEventListener(MouseEvent.CLICK、handleClick); そして単純なif ... else文を作成すれば十分ですが、何とか動作しません。

私のコードを見て、私の悲惨さにつながっている間違いを指摘してもらえますか?ここ

は、コードは次のとおりです。

private var Input:Object; 
    private var Output:Object; 
    private var yournr:String; 
    public function Tehtava25a() 
    { 
     var Input:TextField = new TextField(); 
     var Output:TextField = new TextField(); 
     var initialtxt:String = "Give me the password"; 

     Input.type = TextFieldType.INPUT; 
     Input.border = true; 
     Input.width = 200; 
     Input.height = 200; 
     Input.backgroundColor=0xFFFF99; 
     Input.background =true; 
     Input.borderColor=0x006666; 
     addChild(Input); 

     Output.type = TextFieldType.DYNAMIC; 
     Output.text= initialtxt; 
     Output.background = true; 
     Output.border = true; 
     Output.backgroundColor=0xFFFF99; 
     Output.background =true; 
     Output.borderColor=0x006666; 
     Output.width = 200; 
     Output.height = 200; 
     Output.x = 200; 
     addChild(Output); 
     var button:SimpleButton = new SimpleButton(); 
     button.x = 250; 
     button.y = 250; 

     button.upState = createCircle(0x00FF00, 15); 
     button.overState = createCircle(0xFFFFFF, 16); 
     button.downState = createCircle(0xCCCCCC, 15); 
     addChild(button); 
     button.hitTestState = createCircle(0x000000, 50); 

     button.addEventListener(MouseEvent.CLICK, handleClick , false, 0, true); 


    } 

    private function createCircle(param0:Number, param1:int):DisplayObject 
    {var circle:Shape = new Shape(); 
     circle.graphics.lineStyle(1, 0x000000); 
     circle.graphics.beginFill(0xFF794B); 
     circle.graphics.drawCircle(0, 0, 30); 
     circle.graphics.endFill(); 
     return circle; 
    } 

    protected function handleClick(event:MouseEvent):void 
    {var yournr:String = Input.text; 
    var mynr:String = "1234"; 
     if (yournr == mynr){ 
      Output.appendText = "the number is correct"} 
     else { Output.appendText = "try again"; 
     } 
    } 
    } 
    } 

答えて

0

TextFiels.appendText(...)メソッドではなく、プロパティです。あなたは、次のようにそれを使用します。

protected function handleClick(event:MouseEvent):void 
{ 
    var yournr:String = Input.text; 
    var mynr:String = "1234"; 

    if (yournr == mynr) 
    { 
     Output.appendText("the number is correct"); 
    } 
    else 
    { 
     Output.appendText("try again"); 
    } 
} 

テキストを追加するのではなく、あなたがその.textのプロパティを割り当てる必要がテキストフィールドに、指定したテキストを配置したくない場合は、次の

protected function handleClick(event:MouseEvent):void 
{ 
    var yournr:String = Input.text; 
    var mynr:String = "1234"; 

    if (yournr == mynr) 
    { 
     Output.text = "the number is correct"; 
    } 
    else 
    { 
     Output.text = "try again"; 
    } 
} 
0

私は思いますあなたの問題は、あなたのクラスのコンストラクタであなたのコード

private var Input:Object; 
private var Output:Object; 

とローカル変数の一番上に持っている地元のプロパティの重複が整理され

var Input:TextField = new TextField(); 
var Output:TextField = new TextField(); 

"var"を使ってメソッド(あなたの場合はクラスコンストラクタ)に何かを宣言すると、このメソッドでのみアクセスできますが、他のメソッドではアクセスできません。したがって、あなたのコンストラクタにテキストフィールドを作成しますが、handleClickはあなたのコードの上に宣言した変数(private var ...)を使って作業しています。

言い換えれば、あなたのコードの先頭には、次のようになります。

private var Input:TextField; 
private var Output:TextField; 
private var yournr:String; 

public function Tehtava25a() 
{ 
    //this will refer to the variables above and not local ones 
    Input = new TextField(); 
    Output = new TextField(); 

そして大文字で変数を開始するための悪い習慣である、アドビ共通プラクティスでの変数は、キャメルケースと開始されています小文字で始まり、クラスは大文字で始まります。通常は、変数にoutputTextFieldのような名前を付けることをお勧めします。つまり、コード内に何が表示されているかをすぐに確認できます。

+0

私はあなたの提案を使用しました。確かに、変数が問題でした - 私はあなたの提案に応じてそれらを変更し、それは完全に働いた。私はまた、変更されたappendTextを.textだけに使用して、スムーズかつ美しく表示しました!ああ、ありがとう! – Pandaemonium

+0

ようこそ、私の答えを正しいものとして記入してください;) – Philarmon

関連する問題