Flash - обработка событий мыши (сделать символ прозрачным для мыши)

У меня есть вспышка с фоновым символом, который реагирует на событие CLICK. Поверх этого символа у меня есть спрайт, содержащий растровое изображение с прозрачными пикселями. Оба они добавлены на сцену, поэтому не связаны напрямую.

Я хочу, чтобы щелчки по прозрачным пикселям спрайта переходили прямо в фон.

Я читал о mouseEnabled / mouseChildren, но не смог заставить их работать. Символ игнорирует события мыши, когда я их использую, но не передает их, как если бы он был прозрачным.

Можно ли это сделать со вспышкой? Или мне придется перенаправлять события мыши?

Спасибо


person Alon    schedule 03.02.2010    source источник
comment
Либо установка для свойства mouseChildren фонового Sprite значения false, либо установка false для каждого дочернего свойства mouseEnabled должна помочь. Может быть, событие фонового клика настроено неправильно? Разместите код.   -  person Erix    schedule 03.02.2010


Ответы (2)


Вы можете добавить слушателя к своему растровому изображению (не нужно оборачивать растровое изображение внутри спрайта) для прослушивания события MouseEvent.CLICK.

Затем в вашей функции обработчика кликов просто используйте getPixel32, чтобы получить альфа-канал пикселя, по которому щелкнули:

var alpha:String = ( yourBitmap.BitmapData.getPixel32( e.localX, e.localY ) >> 24 & 0xFF).toString(16);
if( alpha == "0" )
    // Trigger your symbol click handler here
person Zed-K    schedule 03.02.2010
comment
Привет, спасибо за ответ. Возможно, я недостаточно хорошо объяснил себя. Я имею в виду, что у меня есть 2 спрайта, подключенных к сцене. 1) Фон, заполняющий всю сцену. 2) Спрайт, который также прикрепляется к сцене. Теперь оба символа (bg / sprite) реагируют на «щелчок». Я хочу, чтобы прозрачные пиксели в основном игнорировались и передавали щелчок прямо на фон. Еще раз спасибо - person Alon; 03.02.2010
comment
Поскольку вы используете термин символы, я полагаю, они создаются во Flash IDE, а не программно, верно? Если это так, я не понимаю, как использовать этот метод, так как я не знаю, как получить доступ к объекту Bitmap внутри символа (я не совсем привык работать с Flash и его librairy = /) Кстати, вы используете AS2 или AS3? - person Zed-K; 03.02.2010
comment
Мы используем AS3. На самом деле это смесь, мы используем Flash для экспорта наших символов и Flex Builder для программирования. Если вас интересует, что на самом деле не так, я написал об этом ниже. Мое исправление заключалось в том, чтобы сделать PlayerSprites дочерним элементом фона. Таким образом, если событие мыши игнорируется символом спрайта игрока, фон все еще находится в маршруте события и обрабатывается. Спасибо за вашу помощь :) - person Alon; 03.02.2010

Я понял, в чем проблема.

Моя сцена построена так:

stage -> контейнер # 1 -> контейнер # 2 -> PlayerSprites -> Background

Пометка спрайтов игрока как mouseEnabled = false / mouseChildren = false фактически отключает мышь.

Однако к тому времени событие мыши находится в контейнере №2, из-за этого оно не достигнет фонового символа «прозрачным» образом.

person Alon    schedule 03.02.2010