Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обратная маска и MouseEvent под ней (http://www.flasher.ru/forum/showthread.php?t=199522)

Vreden 20.05.2013 00:38

Обратная маска и MouseEvent под ней
 
Нужно сделать обратную маску. Т.е есть общее затемнение и необходимо не затемнять только определенную область и соответственно в этой не затемненной области должны срабатывать события мыши нижних слоев.

Обратная маска с помощью смешивания blendMode (mask.blendMode = BlandMode.LAYER и container.blendMode = BlandMode.ERASE) работает, но события мыши отсутствуют в открытой области.

Есть идеи?

Wolsh 20.05.2013 01:08

InteractivePNG, видимо.

Vreden 20.05.2013 01:12

Не спасает

Wolsh 20.05.2013 01:22

Мне бы такую скорость О__о

Как еще плеер может определить, прозрачно в этой точке или нет, кроме как через битмапдату и установленный порог? Быстродействие будет на нуле конечно, с битмапдатой на весь экран то, которую надо постоянно перерисовывать. Если бы только на клик, еще ладно. А если на MOUSE_MOVE или каждый кадр, плеер повесится.

Добавлено через 5 минут
Конечно, если маска статичная, то все не так страшно.

Vreden 20.05.2013 01:32

Починил

Код AS3:

mask.mouseEnabled = false;

Не понял, зачем каждый кадр что-то перерисовывать?

Wolsh 20.05.2013 01:42

И что, в затененных областях мышь не работает? )))
Вопрос свой перечитайте.

Vreden 20.05.2013 02:12

Не работает.
Да, маска статичная

Добавлено через 17 часов 35 минут
Возникла совсем непонятная мне проблема, при добавлении на сцену объекта, который содержит в себе затемнитель и наложенную на него маску по началу все работает нормально, но если я изменю маску (создам даже новый экземпляр этого объекта с затемнителем но маской в другой области), то события мыши уже не происходят, если маска останется в том же месте, то все будет в порядке.

Я долго искал причину бага и обнаружил лишний Bitmap на сцене в том же контейнере, куда добавляется объект с затемнителем и маской, Bitmap этот добавляется InteractivePNG, свойство visible = false. Что интересно, если удалить этот Bitmap со сцены, то это никак не поможет делу, а вот если его сдвинуть за пределы сцены, то маска снова работает как нужно в любом месте.

Выглядит этот костыль так:

Код AS3:

private function __removeBlackout():void
                {
                        if (__dimmer && __dimmer.parent)
                                this.removeChild(__dimmer);
 
                        var pngBitmap:Bitmap = getChildByName("interactivePngHitMap") as Bitmap;
                        if (pngBitmap)
                                pngBitmap.x = 2000;
                }

Я даже не знаю, что я хочу спросить. Но может с этим постоянно доставляющем проблемы InteractivePNG можно что-то сделать? Мне не нравится этот костыль, но другого выхода я не вижу :(


Часовой пояс GMT +4, время: 18:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.