Actionscript 3 如何将辉光过滤器应用于AS3中movieclip中的所有显示对象?

Actionscript 3 如何将辉光过滤器应用于AS3中movieclip中的所有显示对象?,actionscript-3,flash,movieclip,Actionscript 3,Flash,Movieclip,我有一个movieclip,我在其中应用了一个flashFF2组件,用于在文本字段上创建效果 但是FlashFF2组件丢弃了所有FlashIDE过滤器(GlowFilter)。所以我现在想的是在FlashFF2组件结束动画时添加一个GlowFilter 但问题是FlashFF2将所有文本拆分为单个字母,这导致了大量实例 那么,我如何将这个发光过滤器放到舞台上moviecliptxt\u mc中的所有实例中呢 谢谢 为什么不将GlowFilter添加到容器中 var glowFilter:Glow

我有一个movieclip,我在其中应用了一个flashFF2组件,用于在文本字段上创建效果

但是FlashFF2组件丢弃了所有FlashIDE过滤器(GlowFilter)。所以我现在想的是在FlashFF2组件结束动画时添加一个GlowFilter

但问题是FlashFF2将所有文本拆分为单个字母,这导致了大量实例

那么,我如何将这个发光过滤器放到舞台上movieclip
txt\u mc
中的所有实例中呢


谢谢

为什么不将GlowFilter添加到容器中

var glowFilter:GlowFilter = new GlowFilter();
txt_mc.filters = [glowFilter];

你为什么不把萤光过滤器添加到容器中呢

var glowFilter:GlowFilter = new GlowFilter();
txt_mc.filters = [glowFilter];

包
{
导入flash.display.DisplayObject;
导入flash.display.DisplayObjectContainer;
导入flash.display.MovieClip;
导入flash.display.Sprite;
导入flash.events.Event;
导入flash.filters.BitmapFilter;
导入flash.filters.GlowFilter;
导入flash.text.TextField;
[SWF(width=“500”,height=“100”)]
公共类TestEffects扩展了Sprite
{
私有变量字母:Vector.=新向量。;
公共功能测试效果()
{
超级();
//添加一些文本
var txt_mc:MovieClip=新的MovieClip;
对于(变量i:uint=0;i<100;++i)
{
变量l:TextField=新的TextField;
l、 text=String.fromCharCode(Math.random()*500);
l、 x=i*10;
l、 y=Math.random()*stage.stageHeight;
txt_mc.addChild(l);
_字母。按(l)
}
addChild(txt_mc);
//对每个孩子应用过滤器
var效应:GlowFilter=新GlowFilter;
applyFilterChildren(txt_mc,效果);
//只是为了好玩
addEventListener(Event.ENTER_FRAME,updatePosition);
}
公共函数applyFilterChildren(t:DisplayObjectContainer,效果:BitmapFilter):无效
{
如果(!t)
回来
对于(var指数:uint=0;指数

包
{
导入flash.display.DisplayObject;
导入flash.display.DisplayObjectContainer;
导入flash.display.MovieClip;
导入flash.display.Sprite;
导入flash.events.Event;
导入flash.filters.BitmapFilter;
导入flash.filters.GlowFilter;
导入flash.text.TextField;
[SWF(width=“500”,height=“100”)]
公共类TestEffects扩展了Sprite
{
私有变量字母:Vector.=新向量。;
公共功能测试效果()
{
超级();
//添加一些文本
var txt_mc:MovieClip=新的MovieClip;
对于(变量i:uint=0;i<100;++i)
{
变量l:TextField=新的TextField;
l、 text=String.fromCharCode(Math.random()*500);
l、 x=i*10;
l、 y=Math.random()*stage.stageHeight;
txt_mc.addChild(l);
_字母。按(l)
}
addChild(txt_mc);
//对每个孩子应用过滤器
var效应:GlowFilter=新GlowFilter;
applyFilterChildren(txt_mc,效果);
//只是为了好玩
addEventListener(Event.ENTER_FRAME,updatePosition);
}
公共函数applyFilterChildren(t:DisplayObjectContainer,效果:BitmapFilter):无效
{
如果(!t)
回来
对于(var指数:uint=0;指数
我想知道这会如何影响性能。当应用过滤器时,cacheAsBitmap会自动打开,因此可以将过滤器应用到更大的区域,并且会处理更多的像素(大部分是空白)。同样,使用GPU加速,与在每个TextField实例上使用cache+过滤器的开销相比,这些像素可能更便宜,即使着色器处理的像素更少。我认为您在这里提出的建议是最佳的,但必须对其进行基准测试。此外,如果这些字母在移动,那么最好将它们单独缓存为位图,这样在移动时就不必重新应用过滤器(除非它们被缩放)。对于简单的翻译,将过滤器应用于单个对象可能更有效。这也使得人们可以为每一个容器分配不同的颜色,而不必在每一帧重新计算容器上的过滤器。@Triynko这个问题没有提到性能——如果有,我会建议将发光对象的结果绘制到位图上,并使用该位图进行渲染。我想知道这会如何影响性能。当应用过滤器时,cacheAsBitmap会自动打开,因此可以将过滤器应用到更大的区域,并且会处理更多的像素(大部分是空白)。同样,通过GPU加速,与在每个TextField实例上使用缓存+过滤器的开销相比,这些像素可能更便宜