Flex: Как программно назначить метод событию Image.MouseMove? - PullRequest
0 голосов
/ 11 января 2009

Я понимаю, как декларативно назначать метод для вызова, когда Image получает событие MouseMove.

    <mx:Image 
        id="oneCent"
        mouseMove="dragIt(event, 1);"
    />

Как мне сделать это программно в Flex / AS3?

РЕДАКТИРОВАТЬ: Спасибо за комментарии. Вот что у меня есть:

          myImage = new Image();
            myImage.id = "oneCent";
            myImage.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);

Приведенный выше фрагмент кода назначает метод dragIt событию MOUSE_MOVE для myImage. Все идет нормально. Как передать второй параметр в вызов dragIt?

Ответы [ 4 ]

2 голосов
/ 12 января 2009

Вы не можете передать второй параметр напрямую - добавьте его в myImage:

myImage = new Image();
myImage.id = "oneCent";
myImage.num = 1;
myImage.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);

Затем в функции перетаскивания:

function dragIt(event:MouseEvent):void {
    trace("PARAM =", event.target.num, event.target.id);
}

Где event.target автоматически становится ссылкой на изображение

2 голосов
/ 11 января 2009
oneCent.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);
...

function dragIt(event:MouseEvent):void
{
...
1 голос
/ 12 января 2009

Вы не можете передавать дополнительные аргументы обработчикам событий. За кулисами Flex-компилятор генерирует код, который выглядит примерно так:

private function generatedMouseMoveHandler(event:MouseEvent):void
{
    dragIt(event, 1);
}

Любой обработчик событий, созданный в MXML, будет обернут таким образом. Вот почему вы можете ссылаться на переменную с именем event.

0 голосов
/ 11 января 2009

Скотт получил его, хотя еще лучше (и чище!) Использовать анонимную функцию:

oneCent.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void{
    ...
});

Что лучше, если вы не собираетесь использовать dragIt() позже в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...