当然,与简单地允许开发者创建一个效果的实例并调用它的play 方法相比,实际上特效框架非常复杂。事实上,EffectManager 类管理所有特效的所有实例以避免不必要的定时器和方法调用造成处理器负担过重。一个效果应该看作两个特殊的元素:效果的EffectInstance(它包括效果的相关信息,效果应该做什么,会影响什么元素),和Effect 类(Effect“扮演”工厂的角色,生成效果,开始执行效果,并且在结束后删除它)。
一个效果的播放由四个动作组成。第一,它为每个目标组件创建一个EffectInstance 类的实例。这表明如果一个效果要作用于四个目标对象的话,就会导致创建四个EffectInstance 对象的结果。第二,框架会从工厂对象里复制所有的配置信息到每一个实例:持续时间,重复次数,延迟时间,等等,都作为新实例的属性配置。第三,效果在对象上使用前面创建的实例对象播放。最后,框架,特别是EffectManager 类,效果播放结束的时后删除实例对象。
通常在使用效果的时候,作为开发者的你仅仅是在使用工厂类处理生成的效果。但是,当你开始创建自定义的效果的时候,你将同时创建作为效果类型的工厂Effect 对象和实际在目标上播放的EffectInstance 对象。使用效果,无论注意与否,都要创建生成实例对象的工厂。
你要做的所有配置都在工厂对象里面设置,然后由工厂将这些设置传入生成的实例对象。查看一下框架源码,你会注意到Glow 类和GlowInstance 类。要创建自己的效果,就要成对的创建与之类似的类。
目录
12.1.在MXML和ActionScript里调用Effect
12.2.建立一个自定义效果
12.3.创建Effects的Parallel系列或Sequence系列
12.4.暂停、倒放和重新播放一个Effect
12.5.创建自定义Effect触发器
12.6.创建渐变特效
12.7.在Flex Effect里使用DisplacementMapFilter过滤器
12.8.创建AnimateColor 特效
12.9.使用Convolution Filter创建渐变效果
新闻热点
疑难解答