ActionScript / Flex: дополните MouseEvents дополнительной информацией - PullRequest
0 голосов
/ 12 марта 2010

У меня есть бизнес-класс Spam и соответствующий класс просмотра SpamView.

Как я могу увеличить MouseEvent s из SpamView, чтобы MouseEvent s, которые из него выходили, содержали ссылку на экземпляр Spam, который отображает SpamView?

Вот как я бы хотел его использовать:

class ViewContainer {
    ...
        for each (spam in spams) {
            addChild(new SpamView(spam));
    ...

    function handleMouseMove(event:MouseEvent) {
        if (event is SpamViewMouseEvent)
            trace("The mouse is being moved over spam:", spam)
    }
}

Спасибо!

Вещи, которые я рассмотрел, которые не работают :

  • Добавление прослушивателей событий для каждого SpamView: ведение бухгалтерского учета (проверка того, что они добавлены / удалены должным образом) является болью.

  • Использование event.target: целью события может быть дочерний элемент SpamView (что не очень полезно)

  • Прослушивание MouseEvent, создание нового SpamViewMouseEvent, копирование всех полей, а затем отправка: копирование всех полей вручную также является проблемой.

1 Ответ

0 голосов
/ 12 марта 2010

Есть несколько способов решить этого щенка. Я бы использовал ваш вариант № 2, но создал бы служебную функцию, которая выводит все spamViews на экран и выполняет несколько if-elses в цикле над вашими spamViews.

var targ: DisplayObject = DisplayObject (event.target)

Если (targ - SpamView) //, тогда вы знаете, что случилось.

Если (loopedSpamView.contains (targ)) //, то цель находится внутри spamViewContainer, и вы должны быть крутыми.

Удачи, Джереми

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