PDA

Просмотр полной версии : Наложить GlowFilter на PNG и закешировать


sltt
01.03.2010, 22:12
Есть картинка PNG в библиотеке.
Края полупрозрачные.

Я добавляю ее на Sprite
import flash.display.Sprite;

var img:Sprite = new Sprite();
img.graphics.beginBitmapFill(new craft_img(0, 0), null, false, true);
img.graphics.drawRect(0, 0, 50, 50);
img.graphics.endFill();
addChild(img);
Потом добавляю на спрайт- фильтр Glow
import flash.filters.GlowFilter;
import flash.filters.BitmapFilterQuality;

var glow:GlowFilter = new GlowFilter();
glow.color = 0x000000;
glow.alpha = 0.4;
glow.blurX = 5;
glow.blurY = 5;
glow.strength = 2;
glow.quality = BitmapFilterQuality.HIGH;
img.filters = [glow];

А после этого хочется как нибудь закешировать то что получилось в PNG виде.

наподобие img2 = img.CacheAsBitmap;

И использовать на сцене PNG картинку на которой уже нарисован Glow в виде прозрачностей, вместо того чтоб машина каждый кадр перерисовывала фильтр.

Возможен такой "рендеринг"?

MrPoma
01.03.2010, 22:22
BitmapData.applyFilter

sltt
01.03.2010, 22:32
О, спасибо!
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);