Обработка событий кнопки FLEX - PullRequest
0 голосов
/ 02 мая 2018

У меня есть сценарий, где у меня есть 5 кнопок, которые при нажатии вызывают один и тот же метод. Эти кнопки нажимаются в различных условиях, но теперь я хочу узнать, как мы определяем, какая конкретная кнопка была нажата, из вызываемого метода.

Например, я вызываю метод chocolate (), когда нажимаю кнопки, эклеры, молочко, кедбери, сникерс и киткат. Теперь я нажму любую из этих кнопок в интерфейсе и хочу узнать, какая из них нажата. это событие должно обрабатываться только в методе chocolate ().

Пожалуйста, предложите мне, как я могу это реализовать. Я использую Adobe Flex 3

1 Ответ

0 голосов
/ 03 мая 2018

Если вы не используете 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
    }
}

если вы работаете со слушателями событий, вы можете определить кнопки по их идентификаторам, например:

<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
    }
}
...