Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Векторная маска из полупрозрачного битмапа (http://www.flasher.ru/forum/showthread.php?t=116113)

vmakhotkin 20.09.2008 16:16

Векторная маска из полупрозрачного битмапа
 
Задача.
Загружается png-файл, в котором нарисован, например, треугольник. Треугольник красного цвета. Остальной пнг - прозрачный. В моем приложении необходимо обрабатывать клики по этому треугольнику. Но повесить обработчик прямо на пнг я не могу, потому что прозрачная область тоже будет ловить клики. Так что я хочу запихнуть пнг в мувиклип, и поверх него положить маску в форме этого треугольника, чтобы клики попадали только на треугольник.

Предполагаемое решение: Анализировать битмап с помощью BitmapData и по координатам непрозрачной области рисовать черные квадратики в graphics клипа mask и потом применить этот клип как маску к битмапу.

Правильно?:confused:

flash33 20.09.2008 16:40

Зачем так сложно. Проверяешь, прозрачен ли пиксель с данной координатой
Код:

if((bitmapData.getPixel32(x, y)>>24) >0) {обработчик непрозрачной области}
Вроде так :)

vmakhotkin 20.09.2008 17:24

это мне не подходит. Там будет много таких "треугольников", и если один из них попадет под прозрачную область другого, то не сможет принимать клики

etc 20.09.2008 17:35

Цитата:

Сообщение от vmakhotkin (Сообщение 765234)
это мне не подходит. Там будет много таких "треугольников", и если один из них попадет под прозрачную область другого, то не сможет принимать клики

Это почему? Проверили прозрачность верхнего, поняли, что прозрачный, проверили прозрачность пикселя на картинке ниже и так далее.

vmakhotkin 20.09.2008 18:28

Хм. Спасибо, попробую так. А с курсором в виде руки что можно сделать? Если пиксели все прозрачные, делать useHandCursor = false?

etc 20.09.2008 18:44

Ну можно и так. Только в AS3 нет useHandCursor.

vmakhotkin 20.09.2008 19:06

Как это нет? http://livedocs.adobe.com/flash/9.0/...#useHandCursor

$mival 20.09.2008 19:24

buttonMode

vmakhotkin 20.09.2008 19:51

Понял, это правильней. Спасибо.

etc 20.09.2008 20:26

Цитата:

Сообщение от vmakhotkin (Сообщение 765253)

А, пардон, осталось, значит. :rolleyes:


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

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