AngularJS 1.4对动画系统进行了彻底的重构

分享 《关于我》

分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS

分享 《HTML开发MacOSApp教程》      http://pan.baidu.com/s/1jG1Q58M

AngularJS 团队刚刚宣布了1.4发布候选版的问世,对内部的动画代码系统进行了彻底的重构。

在1.4版本中,ngAnimate使用了新的动画系统,通过回调钩子支持基于CSS的动画以及基于JavaScript的动画。

Google在这个JavaScript框架的 发布说明 中表示,在新的 $animate 特性中“ngAnimate的全部代码都进行了重写,以使内部的动画代码更加灵活、重用性更高并且性能更出色。”

Matias Niemelä是来自Google的一位软件工程师,他在 Google+上的一篇帖子 中宣布了在1.4版本中ngAnimate所包含的“一系列新特性与bug修复”。

包括以下内容:

  • 使用$animateCss通过命令式的方式控制或触发基于CSS的转换和关键帧
  • (使用ng-animate-ref)生成跨页面的跨动画元素
  • 使用$animate中新的API处理回调
  • 包括大量与回流相关的bug修复,并且将提供一个更好的基础,以便在即将到来的1.5版本中能够实现更多的特性。

$animate在新的版本中也产生了大量的破坏性改动。其中最引人注目的一条是,JavaScript与CSS动画将无法并行地运行了。在之前的版本中,通过使用ngAnimate,当检查到多个动画运行时,可以同时运行CSS与JS的动画。

不过,虽然这一特性从1.4版本中被移除,但AngularJS对此表示“通过将$animateCss注入到某个由JavaScript定义的动画中,并且在其中创建自定义的基于CSS的动画,可以实现相同的效果,甚至还能够带来更多的可能性”。

$animate在新版本中的破坏性改动还包括$animate.enabled()这个函数的参数的变化,当调用$animate.enabled()这个函数时使用某个单一元素的的话,那么该函数将表现为一种getter方法。

$animate的另一个破坏性发动是“在动画的promise回调中无需调用$scope.$apply或$scope.$digest了,因为该promise已经通过一个digest进行自动解析了(但如果没有对promised进行链式调用,digest是不会自动运行的)”

使用$animateCss通过命令式的方式控制或触发基于CSS的转换和关键帧

(使用ng-animate-ref)生成跨页面的跨动画元素

使用$animate中新的API处理回调

包括大量与回流相关的bug修复,并且将提供一个更好的基础,以便在即将到来的1.5版本中能够实现更多的特性。

// < 1.4
$animate.enter(element).then(function() {
$scope.$apply(function() {
$scope.explode = true;
});
});
// 1.4+
$animate.enter(element).then(function() {
$scope.explode = true;
});

可以在 这里 找到关于其它破坏性改动的更多细节。

Angular 1.4版本的开发代号为 smooth-unwinding ,其中也包括了多个性能改进之处,包括对ngOptions的改动,现在它只在使用track by的情况下才会对ngModel进行深度等同性测试。此外,当Angular app卸载时,$rootScope也会移除历史事件的处理器。

1.4原本计划在2015年3月份发布,当时 ng-conf 这个关注于AngularJS的大会正在如火如荼地进行中。在1.4版本发布之后,AngularJS 1.5的工作就将正式展开。Brad Green是Google工程团队的总监,也是Angular开发计划的领导人,他在ng-conf大会之后 宣布 ,1.5版本的主题是支持与Angular 2的整合。

虽然整个Angular社区对于2.0版本仍然保有很大的疑惑和困惑,但Google已经表示他们将继续在angularjs.org上维护Angular 1.X版本,而在 angular.io 上发布Angular 2.0的Alpha版本。在ng-conf大会上Google也再次对社区明确表态:在Angular 2.0版本的流量占到上风之前,他们绝对不会结束Angular 1.X的生命。

查看英文原文: AngularJS 1.4 Completely Refactors Animation System

时间: 2024-08-29 09:43:20

AngularJS 1.4对动画系统进行了彻底的重构的相关文章

Unity3d 4.0新动画系统Mecanim用法(二)

上一篇,我们初步了解了一下Mecanim的部分很基础的类容,我以一个疑问的形式结尾.这次我来揭晓此问题的答案,其实很简单,上次的警告如下: 4.0新动画系统Mecanim用法(二)"> 警告的大概意思是:用在Animator Controller中的Animation clips需要有在检视面板中被设置了Muscle(肌肉)的这个步骤. 我的英文很烂,但我可以知道这句话的含义,就是我们的用到的这个Animation Clip必须是已经产生了Avatar的模型中的Animation Clip

【Unity编程】Unity动画系统(一)

Unity动画系统 Unity动画系统,也称为"Mecanim",提供了以下功能: 简单的工作流程,设置动画的所有元素,包括对象,角色和属性. 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段. 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画. 用于编辑动画状态的的简化工作流程,即动画控制器. 方便预览动画片段,以及片段之间的插值过渡. 这使得动画师可以独立

在Unity3D的Legacy动画系统中应用Root Motion

最近仔细比较了Unity3D目前版本中的两套动画系统:Legacy和Mecanim.Mecanim系统功能较之Legacy要强大很多,但是使用AnimatorController着实不方便(尽管使用AnimatorOverrideController可以避免重复编辑状态机),是因为游戏逻辑层面往往要用一个状态机或者类似的机制来控制角色的状态,而角色层面的状态逻辑和动画层面是无法一一对应的,两套复杂的状态机要配合起来...想想就觉得蛋疼啊!难怪很多朋友现在还在使用Legacy动画系统.Legacy

【腾讯GAD暑期训练营游戏程序班】游戏中的动画系统作业

游戏中的动画系统作业说明文档   一.实现一个动画状态机:至少包含3组大的状态节点 动画状态机如图所示,其中Blend Tree_Run是一个动画混合树,Blend为混合树的参数,speed为控制动作过渡的参数,共有蹲下空闲状态.走路状态.跑路状态三种状态. (1)    当speed大于0.1时,由蹲下的空闲状态转换为走路状态. (2)    当speed小于0.1时,由走路状态转换回蹲下空闲状态. (3)    当speed大于0.2且在走路状态时,可转换为动画混合树制作的跑步状态. (4)

Mecanim动画系统(三)

一.初识Blend Trees(混合树) ● 混合树 用于两个或多个类似动画的融合.如从walk到run的速度的变化,或在奔跑的时候向左.向右的倾斜角度. ● 2D Simple Directional(简单的定向): 表示在二维每个空间方向只能有一个动作 最适用于当你的动作片段代表不同方向时,如"向前行走"."向后行走"."向左行走"和"向右行走"或是"向上瞄准"."向下瞄准".&qu

从虚幻4动画系统与控制器交互理解数据驱动(一)古老的写法

游戏开发中古老的思想是认为,游戏是程序和数据来构成的,程序加载数据,并根据当前游戏的各种"状态"来调用对应的代码分支,由对应的代码分支来控制数据的使用,重要的数据之一就是动画.具体表现为,在游戏开发中对于动画会大量的使用状态机. 我们先看古老游戏的动画系统,在后面我们在讨论虚幻4的动画-- 一个古老的游戏动画库伪码大概是这样的: Class 动画数据 {     void 创建(动画数据文件路径)     void 释放()          void 播放()     void 绘制

Unity3D游戏开发之Unity3D动画与Mecanim动画系统

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生.Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期.使用从Unity资源商店找到的动画资源,或

[Unity3D]Unity4新的动画系统Mecanim

Unity4.X中添加的新的动画系统取代了原来3.X的旧的动画系统,新动画系统Mecanim也是官方推荐的,使得我们写较少的代码来实现连续的动画效果. 效果图 Unity3.X中动画系统播放动画 使用播放play()或淡入淡出播放CrossFade() 例如: animation.Play("name"); animation.CrossFade("name"); 也可以做成队列动画,然后播放,例如: animation.PlayQueued("name&

关于Unity中新版动画系统的使用

Mecanim动画 1:旧版动画系统只能通过代码来控制动画播放,随着动画种类变多,代码复杂度也会增加,同时动画过渡也需要非常繁琐的代码控制,为了让有经验的动画师开发动画,unity推出了针对人物角色的Mecanim动画系统;2:Mecanim支持运动重定向(Retargeting)功能,即把动画从一个角色模型应用到另一个角色模型;3: Mecanim允许使用"肌肉"来控制不同骨骼的运动范围;觉得某个动画太夸张的时候,可以用"肌肉"来限制一下.4: Mecanim动画