1

我有一个影片剪辑,我在其中应用了 FlashEff2 组件来在文本字段上创建效果。

但是 FlashEff2 组件会丢弃所有 Flash IDE 过滤器 (GlowFilter)。所以我现在想的是在 FlashEff2 组件结束其动画内容时添加一个 GlowFilter。

但问题是 FlashEff2 将所有文本分解为单个字母,这会导致大量实例。

那么,我怎样才能将这个 Glow Filtertxt_mc放到舞台上movieclip 内的所有实例中呢?

谢谢!

4

2 回答 2

3

在此处输入图像描述

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;
        }
    }
}
于 2013-09-30T07:24:34.137 回答
2

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

var glowFilter:GlowFilter = new GlowFilter();
txt_mc.filters = [glowFilter];
于 2013-09-30T07:16:16.893 回答