Creating a Custom Animation Effect in Flex 4
源文链接:
Creating a Custom Animation Effect in Flex 4
原作者: DAVID SALAHI 原文章时间: DECEMBER 19, 2010
原创翻译链接:
http://www.smithfox.com/?e=63, 转载请保留些声明
正如我在前面的文章中讨论的 "
继续对O'Reilly的Flex 4 Coookbook 失望", 我最近在那里找如何创建一个Flex4自定义特效的示例代码, 结果让我很失望。 尽管Adobe docs在"
有关创建自定义特效"一文中有一些内容, 但缺少一些细节, 尤其是你想要基于Spark动画基类来创建特效时。 当我在Flex4 Cookbook看到11.8"创建定制动画特效"时, 我认为我已经找到了我想要的: 就是在308页的那些继承于Flex4 Spark Animate类的示例代码. 然而,我很快发现308到310页的示例代码简单就是Flex3和Flex4混在一起的东西, 根本不能编译. 在此我就不想多说了。如果你真的对此感兴趣, 你可以看我以前的文章。
在这里,我将分享我最终通过扩展Flex4的Animate类和AnimateInstance类来创建的自定义特效。
就象上面的Adobe doc中所提到的, 你需要写两个类来创建一个自定义动画. 一个类是工厂类, Flex框架会调用它来创建你的动画特效的实例. 另一个类是具体实现你的定制动画的. 一旦你搞清楚这个基本概要, 一切就变得很容易了. 下面是我的工厂类:
public class CustomAnimateEffect extends Animate {
public var finalAlpha:Number;
public function CustomAnimateEffect (target:Object=null) {
super(target);
this.instanceClass = CustomAnimateInstance;
}
// 创建新的实例
override protected function initInstance(instance:IEffectInstance):void {
super.initInstance(instance);
CustomAnimateInstance(instance).finalAlpha = this.finalAlpha;
}
override public function getAffectedProperties():Array {
return ["alpha"];
}
}
首先,你必须提供一个以你特效命名的特效工厂类。在构造函数中设置instanceClass。 然后你必须设置那些动画所必需的属性。在本例中, 我只需设置finalApla属性的值. 正如你将看到下面这个特效演示,特效目标的alpha开始于当前所设置值。
你可以设置多个属性,并且使他们都参与动画。 这点对定制特效非常有用。 当然你也可以使用Parallel和Sequence对象。 自定义特效可以让你更灵活地用你自己的方式来实现你想要的特效。 例如你可以选择让目标的alpha在整个动画过程是均速变化的,在特效一半时开始变化颜色。你还可以将在特效后面一半时间内将颜色变化提速为前面的两倍(好,你可能已经做到Sequence和startDelay的效果了, 这可是你自己的实现方式哦!)
下面的两个类就来具体实现这个效果:
public class CustomAnimateInstance extends AnimateInstance{
public var finalAlpha:Number = -1;
public function CustomAnimateInstance(target:Object) {
super(target);
}
override public function play():void {
var motionPath:SimpleMotionPath = new SimpleMotionPath("alpha");
motionPath.valueFrom = (target as DisplayObject).alpha;
motionPath.valueTo = finalAlpha == -1 ? 1 : finalAlpha;
motionPaths = new Vector.;
motionPaths.push(motionPath);
super.play();
}
override public function animationUpdate(animation:Animation):void {
(target as DisplayObject).alpha = animation.currentValue.alpha as Number;
}
}
这里, 我们重载了IAnimationTarget的两个方法。 大部分的代码只是简单地创建了一个Animate类所需的SimpleMotionPath。 这个Animate类会在每帧计算补间值。请注意motion path必须在play方法中创建而不是在构造函数。 这是因类直到开始play, finalAlpha值才被设置。 那时CustomAnimateEffect的实例化方法才被调用, 在那里这些值才能从client代码中传过来。 下面是client代码:
<fx:Declarations>
<local:CustomAnimateEffect id="customEffect" finalAlpha="1" target="{btn2}" />
</fx:Declarations>
<s:VGroup gap="10" paddingTop="10" paddingLeft="10">
<s:Button label="Click to fade in the button below" click="customEffect.play()"/>
<s:Button id="btn2" label="Fade Me In" fontSize="50" alpha="0.2"/>
</s:VGroup>
下载这个flex特效的源代码(fxg)
原创翻译链接:
http://www.smithfox.com/?e=63, 转载请保留些声明
From http://www.smithfox.com/?e=63
分享到:
相关推荐
在Flex4中,`mx.effects`和`spark.effects`包下提供了大量的内置效果类,例如Fade、Slide、Zoom等,开发者可以直接使用,也可以自定义效果。这些效果可以应用于组件、容器甚至整个舞台,为应用带来丰富的视觉动态。 ...
Flex特效在IT行业中主要指的是Adobe Flex,它是一个用于构建富互联网应用程序(RIA)的开源框架。Flex使用MXML和ActionScript编程语言,可以创建交互性强、视觉效果丰富的Web应用程序。在网页设计和开发中,Flex特效...
除了内置特效,开发者还可以通过继承Effect类或使用EffectFactory来创建自定义特效。自定义特效通常涉及以下步骤: 1. 创建Effect子类,重写必要的方法,如initialize、updateCurrentFrame和finish。 2. 定义特效...
8. **自定义组件**:如果Flex的标准组件无法满足果冻特效的需求,开发者可以创建自定义组件,继承自现有组件并扩展其功能,以实现特定的果冻效果。 在"guodong"这个压缩包文件中,可能包含了实现Flex果冻特效的源...
5. **自定义组件**:Flex允许开发者创建自定义组件,将翻书功能封装为一个独立的UI组件。这样,可以方便地在其他项目中复用此组件。 6. **Flex Builder**:作为开发工具,Flex Builder提供了强大的图形化界面和调试...
1. **Stage3D API**: Flex 4中的3D特效主要基于Stage3D API,这是一个低级的硬件加速图形渲染引擎。Stage3D允许开发者直接访问GPU,进行高效的大规模图形处理,包括3D建模、旋转、缩放和动画效果。 2. **Spark组件*...
3. **自定义可能性**:除了预定义的特效,Efflex还允许开发者自定义特效。通过继承Effect类,开发者可以创建自己的特效,并控制其各个阶段,如开始、执行和结束。 4. **性能优化**:Efflex考虑到性能问题,在设计时...
在Flex4中,我们可以利用组件的动画效果来创建引人入胜的用户体验。 首先,让我们来探讨一下Flex4中的动画机制。Flex4引入了全新的Effects框架,它允许开发者通过声明式的方式定义和应用动画效果。Effects框架包括...
在Flex4中,特效主要通过Spark Effects库来实现,这个库包含了一系列预定义的动画效果和一个强大的自定义效果系统。开发者可以使用Effect类或者MXML特效标签来创建和控制特效。例如,我们可以使用Fade、Slide等效果...
Flex 3D特效源码是一种基于Adobe Flex技术的高级视觉表现形式,主要用于创建引人注目的3D动画和交互效果。Flex是ActionScript 3.0的开发框架,它允许开发者构建富互联网应用程序(RIA)并发布为Flash Player或Adobe ...
在创建自定义控件时,可以定义自己的皮肤类,提供不同的视觉风格。 7. **性能优化**:在处理大量或高分辨率图片时,需要注意性能问题。可以考虑使用位图缓存(BitmapCache)来提高渲染速度,或者在缩放时动态调整...
在Flex开发中,Panels是常用的组件之一,用于创建具有标题和可选边框的容器。Panel组件在Flex中提供了丰富的自定义可能性,包括外观、交互以及视觉效果。本话题将深入探讨“flex中paner的特效”,我们将讨论如何利用...
10. **自定义组件**:掌握如何创建自定义组件,扩展Flex的功能以满足特定项目需求。 通过逐个分析和运行"flex4tfs每课源码"中的例子,你不仅能够深入理解Flex 4的各个方面,还能提升实际开发能力。同时,这些源码也...
3. 自定义组件:由于Flex的标准组件可能无法完全满足特定的Mac风格弹出框效果,因此可能需要创建自定义组件。这涉及到对组件生命周期的理解,以及如何覆盖或扩展组件的默认行为。 4. 事件监听与处理:在Flex中,...
此外,自定义特效也是可能的,这允许开发者根据项目需求创造出独特的效果。 2. **使用Animate和Transition** Flex中的Animate类是实现动态效果的核心,它能够改变组件的属性,如位置、大小、颜色等。Transition则...
总而言之,Flex特效编辑器是Flex游戏开发者的强大助手,它提供了一种高效且直观的方式去创建和管理游戏中的特效,从而提升游戏的整体质量和玩家体验。通过深入学习和实践,开发者可以利用这个工具创造出令人惊叹的...
4. **组件开发**:Flex的组件模型是其核心特性之一,开发者可以通过自定义组件来满足特定需求。3D菜单就是一个典型的自定义组件例子,它扩展了基础的Flex菜单组件,添加了3D旋转、平移等视觉效果。 5. **...
在Flex中,我们可以利用MXML和ActionScript来创建自定义组件。为了实现标签云效果,我们需要自定义一个组件,继承自已有的UIComponent类,或者使用现有的Spark或MX组件库中的基础类进行扩展。Spark组件库更加轻量级...
Flex 3D特效是Adobe Flex框架中用于创建三维(3D)用户界面和动画效果的技术。Flex是一款基于ActionScript和MXML的开源开发工具,它允许开发者构建富互联网应用程序(RIA)。在本案例中,"Flex 3D特效"特别关注了...
5. **States(状态)**:在Flex 4中,开发者可以为组件定义多种状态,如“normal”、“hover”、“selected”等,方便在不同情境下展示不同的界面效果。 6. **Effects(特效)**:Flex Builder 4支持ActionScript ...