0

私はスプライトウィッチ(単純な正方形)から作られたAS3のボタンをやっています。ボタンとして機能するようにイベントリスナーを追加すると機能しますが、button.x に依存するため、必要な場所にボタンを配置するとボタンが機能しなくなります。

ありがとう

        public function pintaInterficieTrad(){

        while(numChildren != 0) removeChildAt(0);

        var idioma = new TextField();

        idioma.text=traductor.*[numTrad].*;
        idioma.width=200;
        idioma.selectable=false;
        idioma.setTextFormat(format);
        idioma.x=20;
        idioma.y=20;
        addChild(idioma);

        var trad = new Sprite();
        trad.graphics.lineStyle(5,0x00ff00);
        trad.graphics.beginFill(0x000000);
        trad.graphics.drawRect(300,20,150,70);
        addChild(trad);

        var textTrad = new TextField();

        if(numTrad==0) {
            textTrad.text="Traduir";
        }else{
            textTrad.text="Traducir";
        }

        textTrad.width=200;
        textTrad.selectable=false;
        textTrad.setTextFormat(format);
        textTrad.x=270;
        textTrad.y=40;
        addChild(textTrad);

        var getBack = new Sprite();
        getBack.graphics.lineStyle(5,0x00ff00);
        getBack.graphics.beginFill(0x000000);
        getBack.graphics.drawRect(500,20,150,70);
        addChild(getBack);

        var textgetBack = new TextField();
        if(numTrad==0) {
            textgetBack.text="Tornar";
        }else{
            textgetBack.text="Volver";
        }

        textgetBack.width=200;
        textgetBack.selectable=false;
        textgetBack.setTextFormat(format);
        textgetBack.x=470;
        textgetBack.y=40;
        addChild(textgetBack);

        trad.addEventListener(MouseEvent.CLICK,traduirBtn);
        getBack.addEventListener(MouseEvent.CLICK,tornarBtn);

        var userBox = new Sprite();
        userBox.graphics.lineStyle(2,0x00ff00);
        userBox.graphics.beginFill(0xffffff);
        userBox.graphics.drawRect(40,130,610,160);
        addChild(userBox);

        var tradBox = new Sprite();
        tradBox.graphics.lineStyle(2,0x00ff00);
        tradBox.graphics.beginFill(0xffffff);
        tradBox.graphics.drawRect(40,320,610,160);
        addChild(tradBox);      

        var formatTxt = new TextFormat();
        formatTxt.color=0x000000;
        formatTxt.size=14;


        var textUser = new TextField();
        var textTraduit = new TextField();

        textUser.defaultTextFormat=formatTxt;
        textUser.text = textUsuari;
        textUser.width = 600;
        textUser.height = 150;
        textUser.x=45;
        textUser.y=130;
        addChild(textUser);

        textTraduit.text = traduccio;
        textTraduit.setTextFormat(formatTxt);
        textTraduit.width = 600;
        textTraduit.height = 150;
        textTraduit.x=45;
        textTraduit.y=325;
        addChild(textTraduit);

    }

    public function traduirBtn(e){
        while(numChildren != 0) removeChildAt(0);
        tradueix();
        pintaInterficieTrad();
    }
    public function tornarBtn(e){
        while(numChildren != 0) removeChildAt(0);
        pintaMenu();
    }

}

四角形を x=0 に置くと、本来の動作を実行します...

4

2 に答える 2

1

あなたが話しているボタンはのようですtrad。コードのかなり早い段階でそれを行っています。addChildつまり、別の表示オブジェクトが同じ位置でその上に来る可能性があります。その位置でクリックすると、クリック イベントは一番上の要素にしか送信されないため、最後にユーザーに操作してもらいたい要素 (ボタン、テキスト フィールド入力など) を追加してみてください。

于 2012-11-01T12:04:19.873 に答える
0

あなたの問題は、ボタンの上にテキストを追加していて、ボタンではなくテキストがクリックされているという事実にあります。

テキストをボタン自体に追加すると、クリック イベントが機能します。

また、他のコンポーネントがボタンを覆っていないことも確認してください。透明でも、テキストボックスのように。

于 2012-11-01T14:13:12.093 に答える