我如何知道在flex中单击了哪个按钮?

时间:2009-12-10 10:52:21

标签: flex

             for (iss = 0; iss < listOfProductIds2.length; iss++)
        {
            // Alert.show(listOfProductIds2[iss]);
                        var productMain:VBox=new VBox();
             var p1:HBox=new HBox();
             var l1:Label=new Label();
             var b1:Button=new Button();
             var spacer:Spacer=new Spacer();
             spacer.width=300;
             b1.label="Remove";
             b1.setConstraintValue("id","");
             b1.addEventListener(MouseEvent.CLICK,removeProduct); 
             l1.text="Product "+iss;
             p1.setActualSize(500,500);
             p1.addChild(l1);
             p1.addChild(spacer);
             p1.addChild(b1);
             productMain.addChild(p1);  
        }

          function removeProduct(event:MouseEvent):void
    { 
        // How do i know which button is clicked 
    }

4 个答案:

答案 0 :(得分:2)

使用event.currentTarget(而不是event.target),因为event.target可能是Label组件或按钮中的某个样式组件,但currentTarget可以保证是监听者注册的对象。

要获取单击按钮的句柄,您只需将currentTarget转换为按钮即可。

function removeProduct(event:MouseEvent):void
{ 
    var b1:Button = Button(event.currentTarget);
}

方法setConstraintValue用于设置布局约束,而不是设置id。 mxml使用id属性为对象创建变量名称。您可以获得/设置id,因为您可以获得/设置任何其他属性(比如宽度) - 但我没有看到任何人这样做,也没有看到任何需要这样做的事情。

答案 1 :(得分:0)

event.target应该指向你点击的按钮,不应该吗?但是你应该给按钮提供ID以便能够区分它们(因为你动态地创建它们。)

答案 2 :(得分:0)

查看event.target

答案 3 :(得分:0)

如果动态分配ID,如给定b1.id = "button_" + listOfProductIds2[iss]示例中所示 然后处理click事件的函数将查看currenttarget,而我通常做的是对你知道不是动态的id部分执行字符串替换,如"button_" "",留下您的产品名称。