Форум 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=210781)

KingMaks 05.05.2015 00:17

Обратная маска
 
Реально ли сделать обратную маску? То есть, чтобы было видно ту область мувика, которая находится за пределами маски?

OlmerDale 05.05.2015 00:32

Да. Применить маску к shape и уже этот shape использовать как маску.

samana 05.05.2015 17:38

Либо у мувика выставить blendMode = "layer", и не создавать ему маску, а просто добавить в него дисплейОбъект, которому установить blendMode="erase". В итоге дисплейОбъект будет делать дырку в мувике.

delphic 06.05.2015 21:42

Цитата:

Сообщение от samana (Сообщение 1182023)
Либо у мувика выставить blendMode = "layer", и не создавать ему маску, а просто добавить в него дисплейОбъект, которому установить blendMode="erase". В итоге дисплейОбъект будет делать дырку в мувике.

можно маленький пример пожалуйста,меня тоже это тема интересует

callme 07.05.2015 11:29

Код AS3:

var clip1:DisplayObject = new Clip1(); // это клип, в котором нужно вырезать дырку
var clip2:DisplayObject = new Clip2(); // это клип-дырка
 
clip1.blendMode = BlendMode.LAYER;
clip2.blendMode = BlendMode.ERASE;
 
clip1.addChild(clip2);

help.adobe.com

ZackMercury 07.05.2015 11:54

callme, попытка доступа к неопределённому методу addChild в типе DisplayObject.
Исправляю:
Код AS3:

var clip1:DisplayObjectContainer = new Clip1(); // это клип, в котором нужно вырезать дырку
var clip2:DisplayObject = new Clip2(); // это клип-дырка
 
clip1.blendMode = BlendMode.LAYER;
clip2.blendMode = BlendMode.ERASE;
 
clip1.addChild(clip2);


delphic 08.05.2015 07:37

Цитата:

Сообщение от ZackMercury (Сообщение 1182099)
callme, попытка доступа к неопределённому методу addChild в типе DisplayObject.
Исправляю:
Код AS3:

var clip1:DisplayObjectContainer = new Clip1(); // это клип, в котором нужно вырезать дырку
var clip2:DisplayObject = new Clip2(); // это клип-дырка
 
clip1.blendMode = BlendMode.LAYER;
clip2.blendMode = BlendMode.ERASE;
 
clip1.addChild(clip2);


а к примеру обратно закрасить дырку ? если скажем фон с дырками, и хочется закрасить программно

ZackMercury 08.05.2015 13:45

Код AS3:

clip2.blendMode = BlendMode.NORMAL

? //отобразить clip2 вместо дырки
Код AS3:

clip1.removeChild(clip2);

? //Убрать ваще clip2 из clip1 нафик.

Можно даже попиксельно анимировать уход clip2, отрисовав его в BitmapData и проходясь по пикселам.

delphic 08.05.2015 16:14

Цитата:

Сообщение от ZackMercury (Сообщение 1182158)
Код AS3:

clip2.blendMode = BlendMode.NORMAL

? //отобразить clip2 вместо дырки
Код AS3:

clip1.removeChild(clip2);

? //Убрать ваще clip2 из clip1 нафик.

Можно даже попиксельно анимировать уход clip2, отрисовав его в BitmapData и проходясь по пикселам.

а если к примеру сделать определенную часть clip1 прозрачней,не вырезая, как это выглядит?
И еще например если у меня вложены клипы то как его прорезать на фон?
например фон это clip1, clip2 это будет круг который будет крутить по радиусу резак, clip3 это резак.
в итоге
clip3.clip2.blendMode = BlendMode.ERASE ???
но будет ли на фоне вырезан clip3 ? мне не нужно что бы вырезался круг,он просто будет двигать резак
делаю на подобии диаграммы.

delphic 28.10.2015 16:46

повозился, посмотрел, появилась нужда усложнить, как например вырезать треугольник,если он мувик то режется квадрат, а как можно треугольник сделать,программно как то неудобно,графику хоть видно как будет выглядит,как то можно сделать так именно нарисованную графику прорезать?

caseyryan 28.10.2015 19:38

Цитата:

Сообщение от ZackMercury (Сообщение 1182099)
callme, попытка доступа к неопределённому методу addChild в типе DisplayObject.
Исправляю:
Код AS3:

var clip1:DisplayObjectContainer = new Clip1(); // это клип, в котором нужно вырезать дырку
var clip2:DisplayObject = new Clip2(); // это клип-дырка
 
clip1.blendMode = BlendMode.LAYER;
clip2.blendMode = BlendMode.ERASE;
 
clip1.addChild(clip2);


Совершенно нет смысла здесь использовать тип DisplayObjectContainer, (это просто длинное некрасивое слово), так как все контейнеры во флеше , кроме Stage, наследуются от спрайта. Экземпляр Stage мы создать не можем, поэтому можно всегда писать тип Sprite.

ZackMercury 28.10.2015 20:37

caseyryan,
1) теме уже пол года
2) а что если у нас Bitmap или Shape?

caseyryan 28.10.2015 20:52

Цитата:

2) а что если у нас Bitmap или Shape?
Это не контейнеры


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

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