我有一个影片剪辑,我在其中应用了 FlashEff2 组件来在文本字段上创建效果。
但是 FlashEff2 组件会丢弃所有 Flash IDE 过滤器 (GlowFilter)。所以我现在想的是在 FlashEff2 组件结束其动画内容时添加一个 GlowFilter。
但问题是 FlashEff2 将所有文本分解为单个字母,这会导致大量实例。
那么,我怎样才能将这个 Glow Filtertxt_mc
放到舞台上movieclip 内的所有实例中呢?
谢谢!
我有一个影片剪辑,我在其中应用了 FlashEff2 组件来在文本字段上创建效果。
但是 FlashEff2 组件会丢弃所有 Flash IDE 过滤器 (GlowFilter)。所以我现在想的是在 FlashEff2 组件结束其动画内容时添加一个 GlowFilter。
但问题是 FlashEff2 将所有文本分解为单个字母,这会导致大量实例。
那么,我怎样才能将这个 Glow Filtertxt_mc
放到舞台上movieclip 内的所有实例中呢?
谢谢!
package
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BitmapFilter;
import flash.filters.GlowFilter;
import flash.text.TextField;
[SWF(width="500", height="100")]
public class TestEffects extends Sprite
{
private var _letters : Vector.<TextField> = new Vector.<TextField>;
public function TestEffects()
{
super();
// Add some text
var txt_mc : MovieClip = new MovieClip;
for(var i : uint = 0; i < 100; ++i)
{
var l : TextField = new TextField;
l.text = String.fromCharCode( Math.random() * 500 );
l.x = i * 10;
l.y = Math.random() * stage.stageHeight;
txt_mc.addChild( l );
_letters.push(l)
}
addChild(txt_mc);
// Apply a filter on every children
var effect : GlowFilter = new GlowFilter;
applyFilterChildren(txt_mc, effect);
// Just for fun
addEventListener(Event.ENTER_FRAME, updatePosition);
}
public function applyFilterChildren(t : DisplayObjectContainer, effect : BitmapFilter) : void
{
if(!t)
return;
for(var index : uint = 0; index < t.numChildren; ++index)
{
var child : DisplayObject = t.getChildAt( index );
child.filters = [ effect ];
}
}
// Update y position
protected function updatePosition(event:Event):void
{
for each(var l : TextField in _letters)
l.y = (l.y + 1) % 80;
}
}
}
为什么不直接将 GlowFilter 添加到容器中?
var glowFilter:GlowFilter = new GlowFilter();
txt_mc.filters = [glowFilter];