|
|
|||||
Регистрация: Dec 2010
Сообщений: 129
|
Туман войны из картинки
Добрый день.
Есть у меня "туман войны", который сделан из много-много черных квадратиков. Но тут посетила идея сделать не просто черным все, нарисовать картинку прям тумана и ее открывать. Скажите пожалуйста, как можно это реализовать. Взять готовую картинку и ее как то распилить и постепенно открывать? Вот как у меня сейчас все работает: public var blackBoxes:Vector.<MovieClip> = new Vector.<MovieClip>(); function shadowWar(){ addChild(conteinerWar); for(var oy:int = 0; oy < 54; oy ++) { for(var ox:int = 0; ox < 72; ox ++) { var blackBox:black = new black(); blackBox.x = ox * blackBox.width; blackBox.y = oy * blackBox.height; conteinerWar.addChild(blackBox); blackBoxes.push(blackBox); } //Функция удаления тумана function deletWar(){ for (var i = 0; i < blackBoxes.length; i++) { if(stage.contains(blackBoxes[i])){ conteinerWar.removeChild(blackBoxes[i]); }else{ //trace("Элемент тумана удален персонажем"); } } blackBoxes = new Vector.<MovieClip>(); removeChild(conteinerWar); trace(blackBoxes.length); } //В этой функции я открываю туман function lvl_1(){ ... for(var i :int = 0; i < blackBoxes.length; i ++) { var distance:Number = Math.sqrt((blackBoxes[i].x - hero_2.x)*(blackBoxes[i].x - hero_2.x) + (blackBoxes[i].y - hero_2.y)*(blackBoxes[i].y - hero_2.y)); if(distance <= 40 && this.contains(blackBoxes[i])) conteinerWar.removeChild(blackBoxes[i]); } ... } Нарисовать большую картинку, нужного размера и ее разрезать или сделать бесшовную текстуру? И может есть способ открывать область не квадратиками, а более мягко? В общем буду раз любой помощи информации. Спасибо.
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
Можно либо через маску, либо через BlendMode.ERASE, или как-то так.
Добавлено через 1 минуту А можно вообще этот туман рисовать кривыми, тогда будет плавно и как вам нужно.
__________________
Я заклинаю вас действовать иначе. |
|
|||||
Bletraut, ещё можно через setPixel, так можно и плавно и как угодно вообще)
Через маску тоже можно плавно. А рисовать можно просто BitmapData.draw(... ..., color:uint);
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Dec 2010
Сообщений: 129
|
Попробовал через макску. Вроде нормально, но не могу понять как сделать, чтобы уже открытые части оставались открытыми...
Вот написал простой код: import flash.events.MouseEvent; import flash.display.MovieClip; import flash.display.Sprite; var imageMask:Sprite = new masker(); var box:Sprite = new boxer(); var container:Sprite = new Sprite(); addChild(container); container.addChild(box); container.mask = imageMask; addChild(imageMask); addEventListener(Event.ENTER_FRAME, maskCreate); function maskCreate(event:Event):void{ imageMask.x=mouseX; imageMask.y=mouseY; } Дублировать маску? так ее может быть очень много и она вся будет следовать за объектом....
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
Регистрация: Dec 2010
Сообщений: 129
|
То есть взять картинку, сделать маской...
а а вот про как в ее битмапдате сделать маску не понял)
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
Цитата:
Для большего реализма можно фильтр какой-нить накинуть на неё.
__________________
Я заклинаю вас действовать иначе. |
|
|||||
Регистрация: Dec 2010
Сообщений: 129
|
А стирать чем?
Erase? Добавлено через 1 час 20 минут пробовал так .. но у меня картинка получается под маской. а как сделать на оборот не пойму ... про erase нормально найти не могу: var pic_msk_data:BitmapData = new bg_clear(); var mymask:Sprite = new Sprite(); addChild(mypic_stage); addChild(mymask); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoves); function onMouseMoves(event:MouseEvent):void { mymask.graphics.beginBitmapFill(pic_msk_data); mymask.graphics.drawCircle(mouseX, mouseY, 40); mymask.graphics.endFill();*/ }
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
Не не, если через bitmap, то не ERASE. Рисуешь просто черную битмапдату, и потом в ней где персонаж ходит просто рисуешь прозрачные пиксели через draw. Или через copyPixels копируешь пиксели из битмапдаты "света" в битмапдату "тумана".
__________________
Я заклинаю вас действовать иначе. |
|
|||||
Регистрация: Dec 2010
Сообщений: 129
|
Так)
У меня есть картинка тумана. я ее нарисовал. красивая))) Я ее хочу стирать) То есть я под нее делаю draw.transpaert = true? или как там, типа разрешаю прозначность? и делаю такую же площать, как и картинка тумана?
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
Часовой пояс GMT +4, время: 22:53. |
|
« Предыдущая тема | Следующая тема » |
|
|