|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2013
Сообщений: 16
|
Использования в качестве маски Ч/Б BMP файл
Собственно как использовать в качестве маски черно/белую бмпшку?
Суть задачи необходимо чтоб сквозь картинку(PNG), а точнее сквозь ее прозрачные участки, Можно было производить клики и тачи по спрайтам, которые находятся ниже(за картинкой с прозрачностью). Предполагаю что нужно использовать ЧБ бмпешку, где белый это пустота а черный - картинка. Как это можно реолизовать средствами AS3 Если можно, то с примером пожалуйста. |
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Маска должна быть не черно белая, а прозрачно-непрозрачная. Т.е. там где объект должен быть не видимым, маска должна быть прозрачная, а где хотим видеть объект - маска не прозрачная и не важно какого цвета. Что бы маска работала попиксельно, надо объекту и маске задать свойство cacheAsBitmap=true, пример можно посмотреть здесь.
Вам надо сделать что бы картинка была видна целиком, а кликабельны только определенные области? Тогда рисуем картинку, сверху накладываем прозрачный(alpha=0) Sprite, накладваем маску на Sprite, и слушаем клики на этот Sprite
__________________
FlashPress.ru | Blog |
|
|||||
Регистрация: Jun 2013
Сообщений: 16
|
Само изображение у меня PNG с уже прозрачными и непрозрачными участками.
Могу ли я использовать это же изображение в качестве маски? И что значит "чтоб маска работала по пиксельно"? И в общем-то почти да, у меня есть картинка "кусок карты местности" Все что за границами карты все прозрачное, а все что внутри, соответственно непрозрачное. Соответственно когда я кликаю/касаюсь по карте то события должны приходить спрайту с картой, а когда по прозрачному участку то спрайтам под картой. |
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
"чтоб маска работала по пиксельно" - это значит что бы скрывались пиксели картинки в том месте, где пиксели маски прозрачные, собственно то, что мы с вами здесь и обсуждаем.
В этом случае вам не надо дополнительных масок, кладите карту в Sprite, затем используйте эту же карту в виде маски Bitmap.
__________________
FlashPress.ru | Blog |
|
|||||
Регистрация: Jun 2013
Сообщений: 16
|
Такой способ, по непонятным для меня причинам, почему-то не пашет
|
|
|||||
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
покажите как выглядит картинка
__________________
FlashPress.ru | Blog |
|
|||||
Регистрация: Jun 2013
Сообщений: 16
|
Зато маска работает так как мне нужно вот в таком виде
maskSpr.graphics.beginFill(0xFFFFFF); maskSpr.graphics.moveTo(10, 586); maskSpr.graphics.lineTo(133, 624); maskSpr.graphics.lineTo(149, 699); maskSpr.graphics.lineTo(230, 745); maskSpr.graphics.lineTo(245, 785); maskSpr.graphics.lineTo(338, 922); maskSpr.graphics.lineTo(363, 930); maskSpr.graphics.lineTo(405, 907); maskSpr.graphics.lineTo(410, 890); maskSpr.graphics.lineTo(400, 869); maskSpr.graphics.lineTo(432, 808); maskSpr.graphics.lineTo(533, 867); maskSpr.graphics.lineTo(572, 854); maskSpr.graphics.lineTo(630, 784); maskSpr.graphics.lineTo(768, 696); maskSpr.graphics.lineTo(768, 0); maskSpr.graphics.lineTo(0, 0); maskSpr.graphics.lineTo(0, 586); maskSpr.cacheAsBitmap = true; Добавлено через 4 минуты Представь себе карту России! на мировой карте. Затем возьми в фотошопе и все что за границами России тупо выдели да удали сделав прозрачным. Вот собственно и получится примерно моя карта. Только у меня карта не России ) |
|
|||||
FSS попробуйте так
var tmp:Sprite = new Sprite(); tmp.addChild(new _Map()); var bounds:Rectangle = tmp.getRect(tmp); var bmd:BitmapData = new BitmapData(bounds.width, bounds.height, true, 0x0); var mapMask:Bitmap=new Bitmap(bmd, flash.display.PixelSnapping.ALWAYS, true); var mtrx:Matrix = new Matrix(); mtrx.translate(-bounds.x, -bounds.y); bmd.draw(tmp, mtrx); mapMask.cacheAsBitmap = true; var map:DisplayObject = new _Map(); map.cacheAsBitmap = true; addChild(mapMask); addChild(map); map.mask = mapMask; правда это скорей костыль нежели правильное решение. Добавлено через 5 минут и еще я может быть чего-то не понимаю, но что вы хотите увидеть? или у вас в последующем коде добавляются объекты в map? Потому что Вы делаете фактически маску для маски и изображение остается идентичным если в него не добавлять объекты или же полученную маску не налаживать еще куда-то.
__________________
return this... |
|
|||||
Регистрация: Jun 2013
Сообщений: 16
|
Цитата:
На карту в последующем будут добавляться интерактивные объекты. Ну там дома, озера, реки, возможно деревья, дороги, тропинки.... В общем представь ситуацию когда есть карта карта (кусок карты): Далее есть куча кликабельных и крутящихся по определенной орбите пиктограмм (типа меню) Соответственно маленькие "o", в порядке отображения, находятся за картой, а большие "O" перед картой. И вот так вот они крутятся почти как планеты вокруг солнца. В итоге при клике на маленькую "o" я кликаю по карте В принципе можно было бы отключить вроде возможность карты принимать события кликов, но тогда я получу возможность кликать сквозь карту по тем "o" что будут располагаться за картой В итоге не задачка получается... Проблема становится более проблемной так как те же объекты на карте в итоге окажутся фактически без маски... И будут кликаться как прямоугольники... |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
InteractivePNG смотрели?
А если только клики надо, без OVER/OUT, то можно еще упростить.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 10:25. |
|
« Предыдущая тема | Следующая тема » |
|
|