2010-02-03 6 views
0

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

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

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

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

Благодаря

+0

Либо установка значения свойства mouseDhildren объекта Sprite на значение false, либо значение false для свойства childEnabled каждого дочернего элемента должно выполняться. Возможно, событие фонового клика настроено неправильно? Опубликуйте код. – Erix

ответ

1

Вы можете добавить слушателя на вашем Bitmap (не нужно обернуть Bitmap внутри Sprite), чтобы прослушивать событие 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 
+0

Привет, Спасибо за ответ. Возможно, я недостаточно хорошо себя объяснил. Я имею в виду, что у меня есть 2 спрайта, связанные со сценой. 1) Фон, заполняющий всю сцену. 2) Спрайт, который также прикреплен к сцене. Теперь оба символа (bg/спрайт) отвечают на «щелчок». Я хочу, чтобы прозрачные пиксели в основном игнорировались и передавали щелчок прямо на задний план. Еще раз спасибо – Alon

+0

Поскольку вы используете термин «символы», я полагаю, они созданы во Flash IDE, а не программно, не так ли? Если это так, я не вижу, как использовать этот метод, так как я не знаю, как получить доступ к объекту Bitmap внутри символа (я не совсем привык работать с Flash и его librairy = /). Кстати, вы используете AS2 или AS3? –

+0

Мы используем AS3. На самом деле это смесь, мы используем Flash для экспорта наших символов и Flex Builder для программирования. Если вас интересует, что было на самом деле неправильно, я написал его ниже, . Мое решение состояло в том, чтобы сделать PlayerSprites дочерним элементом задний план. Таким образом, если событие мыши игнорируется символом спрайта игрока, фон все еще находится в маршруте события и обрабатывается. Спасибо за помощь :) – Alon

0

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

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

стадии -> контейнер # 1 -> контейнер # 2 -> PlayerSprites -> Фон

Разметка игрок спрайты, как mouseEnabled = ложь/mouseChildren = ложь делает фактически отключите мышь.

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