FLEX按钮事件处理

时间:2018-05-02 06:41:20

标签: flex3 mxml

我有一个场景,我有5个按钮,点击时调用相同的方法。在各种条件下单击这些按钮,但现在我想知道我们如何从被调用的方法确定单击了哪个特定按钮。

例如,当我点击按钮,泡芙,dailrymilk,cadbury,士力架和kitkat时,我一直在调用chocolate()方法。现在我将从UI中单击任何这些按钮,我想知道单击了哪一个。此事件只能在chocolate()方法中处理。

请建议我如何实现这一点。我使用的是Adobe Flex 3

1 个答案:

答案 0 :(得分:0)

如果您没有使用addEventListeners但是在按钮中设置click属性,您可以执行以下操作:

<s:Button id="snickers"
          click="{chocolate('snickers')}"
          label="snickers"/>

<s:Button id="kitkat"
          click="{chocolate('kitkat')}"
          label="kitkat"/>

private function chocolate(type:String):void
{
    trace("button", type, "was clicked");

    if(type == "snickers")
    {
        // do stuff
    }
    else if(type == "kitkat")
    {
        // do something else
    }
}

如果您正在使用事件侦听器,则可以从其ID中确定按钮,例如:

<s:Button id="snickers"
          label="snickers"/>

<s:Button id="kitkat"
          label="kitkat"/>

// add your event listeners somewhere like in onCreationComplete
snickers.addEventListener(MouseEvent.CLICK, chocolate);
kitkat.addEventListener(MouseEvent.CLICK, chocolate);

private function chocolate(e:MouseEvent):void
{
    // e.target is the component that has dispatched the event (a button in this case)
    var type:String = e.target.id;

    trace("button", type, "was clicked");

    if(type == "snickers")
    {
        // do stuff
    }
    else if(type == "kitkat")
    {
        // do something else
    }
}