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
}
答案 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_"
""
,留下您的产品名称。