Просмотр полной версии : маска - картинка
два слоя - один из них маска- все прекрастно работает пока в качестве маски я рисую примитивами на этом слое. примитивами самой флэш среды. а как только помещаю полупрозрачный png на этот слой - с намерением использовать его как маску - все перестает работать. почему?
Что перестает работать? Полупрозрачной маску мы так все не сделаете, маска в таком случае будет работать по полной растровой заливке, то есть по прямоугольнику.
Для эмуляции полупрозрачной, например, градиентной маски используются иные приемы.
а каким образом тогда можно достичь возможности использовать полупрозрачный png как маску?
Добавлено через 41 секунду
или вот опять же - тот же perlinnoise мне посоветовали в соседней теме использовать его для анимации листьев. так ведь для этого он должен быть маской!
а каким образом тогда можно достичь возможности использовать полупрозрачный png как маску?
Это невозможно в принципе. Битмапа в слое маски всегда даст прямоугольник.
Stargazer
07.04.2011, 22:05
Это невозможно в принципе. Битмапа в слое маски всегда даст прямоугольник.
А разве, например, трюк с cacheAsBitmap не работает? По-моему, он работает и с растрами тоже (хотя на 100% не уверен).
Ещё 1 вариант с наложениями я пока не испытывал, но мне кажется, что он тоже должен работать с растрами.
Ещё 1 вариант с наложениями я пока не испытывал, но мне кажется, что он тоже должен работать с растрами.
Проверил - не работает.
Ээ cacheAsBitmap И на маску И на слой. Битмапу лично в маску не клал, рисовал в маске с помощью beginBitmapFill - так работало. Очень странно, если нельзя просто битмапу положить.
Проверьте, может я заблуждаюсь, к вечеру голова уже тяжелая.
Насколько мне известно у флеш плеера есть два рендера - один для растровой графики, другой для векторной. Видимо в тех случаях когда DisplayObject рендрерится векторным рендером, он может быть нормальной маской, и наоборот если битмапным.
Блин, сам ищу как это осуществить, но видимо нет возможности такой (
Ээ cacheAsBitmap И на маску И на слой. Битмапу лично в маску не клал, рисовал в маске с помощью beginBitmapFill - так работало. Очень странно, если нельзя просто битмапу положить.
Да, -De- с beginBitmapFill (который Graphics) прокатывает, но там опять же ж вектор, а не растр. Если же требуется допустим часто перерисовывать (убавлять и добавлять), то будет мне кажется глючить. Мне вот нужно слоев 4-5 таких на весь экран. С битмапой могло и не глючить, а тут... (
Даже пробовать не буду
Смените дилера. А лучше вообще пересядьте на что-то менее депрессивное. Работает как угодно.
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.system.Capabilities;
import flash.text.TextField;
import flash.utils.getTimer;
public class Main extends Sprite
{
[Embed(source = "image.png")]
public const tex0:Class;
[Embed(source = "mask.png")]
public const tex1:Class;
public var b2:Bitmap = new tex1();
public var b:Bitmap = new tex0();
public function Main():void
{
addChild(b);
addChild(b2);
b2.cacheAsBitmap = true;
b.cacheAsBitmap = true;
b.mask = b2;
/*раскомментируйте код ниже, чтоб убедиться, что с вектором всё работает так же*/
/*var foo:Sprite = new Sprite();
foo.graphics.lineStyle(0);
foo.graphics.drawCircle(100, 100, 100);
addChild(foo);
foo.cacheAsBitmap = true;
foo.mask = b2;*/
addEventListener(Event.ENTER_FRAME, up);
}
public function up(ev:Event):void {
b2.x = mouseX;
b2.y = mouseY;
}
}
}
Извиняюсь за археологию, но хотел бы дополнить.
Пусть: b1 и b2 клипы на разных "слоях" в Adobe Flash.
Внутри b2 какая-то полупрозрачная пнг-картинка.
Так вот,
b1.mask = b2; //работает правильно.
А вот если по "слою" в котором b2 кликнуть правой кнопкой и создать маску, то маской будет вся область клипа b2.
Вот не знаю баг это или фича =)
Мышь все равно реагирует на квадрат. Если под такой замаскированный битмап положить другой клип, этот другой клип будет закрыт для мыши на всей площади битмапа. По крайней мере мне пока не удалось это обойти ...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.