我在特定空间中说了10个项目,如果我对所有这些项目应用发光和阴影,并且所有这些项目通常都是静态的。其他角色也会在它们周围移动。所以我只是想知道使用带有动作模糊和发光的矢量是明智的。或者有一个PNG?如果我不能拥有PNG并且必须使用具有发光/模糊/阴影的矢量。它们在处理器上是否会过重?
答案 0 :(得分:1)
将位图滤镜(发光,阴影等)应用于任何内容时,Flash会自动启用名为“位图缓存”的功能。只要该功能处于启用状态,Flash就会将对象渲染为位图,然后将使用该位图代替对象,直到它确定需要重新渲染对象为止。只要对象的内部(即子项)以任何方式发生变化,或者除了简单的翻译(x / y的变化)之外,对象本身都会经历任何类型的变换,Flash将重新渲染对象。
这意味着:
答案 1 :(得分:0)
很多PNG带有效果(即模糊,发光,阴影等),它们几乎总能胜过很多矢量对象,并通过代码应用相同的效果。如果你不能使用PNG那么你可以随时利用一个小技巧... BitmapData.applyFilter()!这种方法非常棒,而且在您描述的相同情况下,我设法发现了显着的性能提升。我不会使用矢量图形,而是采用矢量对象的位图快照,如下所示:
var vectorGraphic:MovieClip = someVectorObectThatNeedsFiltersAppliedToIt;
var bmd:BitmapData = new BitmapData(vectorGraphic.width, vectorGraphic.height, true, 0x000000);
var glow:GlowFilter = new GlowFilter(0x00ffff, 1, 4, 4, 2, 1, false, false);
bmd.draw(vectorGraphic, null, null, null, null, true);
bmd.applyFilter(bmd, new Rectangle(0, 0, bmd.width, bmd.height), new Point(0, 0), glow);
var bmp:Bitmap = new Bitmap(bmd, 'never', true);
祝你好运!