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 回答