提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吴园园|2020-01-20 15:46:41.440|阅读 1452 次
概述:GoJS提供了几种内置动画(默认情况下启用)以及创建任意动画的功能。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地简化您的JavaScript / Canvas 程序。
GoJS提供了几种内置动画(默认情况下启用)以及创建任意动画的功能。
该Diagram.animationManager处理一中的动画图。该AnimationManager自动设置和调度默认的动画,并具有属性来定制和禁用它们。通过创建Animation或AnimationTrigger的实例,可以自定义动画。
简介页面详细介绍了用于GoJS动画的不同类。
要查看自定义动画的更多演示,请访问“ 自定义动画”扩展示例。
默认动画
默认情况下,AnimationManager创建并运行使用动画的单一实例的框图几个动画AnimationManager.defaultAnimation。这些动画通过Diagram.model setter和布局在各种命令上发生。与其他动画不同,如果在动画过程中开始新事务,它们将被停止。
出于以下原因,GoJS将自动开始动画制作:
由CommandHandler调用:
通过图调用:
由AnimationTrigger调用,如果已声明:
上面引用的名称是AnimationManager.animationReasons集中的字符串。
默认初始动画从GoJS 2.1开始,默认的初始动画使图表逐渐淡入视图。先前版本分别为零件位置设置动画。为了控制初始动画行为,现在存在AnimationManager.initialAnimationStyle,默认 情况下将其设置为AnimationManager,Default,但可以将其设置为AnimationManager,AnimateLocations以使用GoJS 2.0中的动画样式。您也可以将此属性设置为AnimationManager,None,并使用"InitialAnimationStarting" DiagramEvent定义自己的初始动画。
这是一个带有按钮的示例,这些按钮将AnimationManager.initialAnimationStyle设置为三个不同的值,然后重新加载该图。第四个按钮说明了如何使用"InitialAnimationStarting" DiagramEvent制作自定义的“放大”动画。
diagram.nodeTemplate = $(go.Node, "Auto", $(go.Shape, "RoundedRectangle", { strokeWidth: 0, fill: "lightblue" }), $(go.TextBlock, { margin: 8, font: "bold 14px sans-serif", stroke: '#333' }, new go.Binding("text", "key")) ); diagram.model = new go.GraphLinksModel([{ key: 'Alpha' }, { key: 'Beta' }, { key: 'Delta' }, { key: 'Gamma' }]); // only needed for this demonstration, this flag is used to stop // the "InitialAnimationStarting" listener when other buttons are pressed window.custom = false; window.animateDefault = function() { window.custom = false; diagram.animationManager.initialAnimationStyle = go.AnimationManager.Default; diagram.model = go.Model.fromJSON(diagram.model.toJSON()); } window.animateLocations = function() { window.custom = false; diagram.animationManager.initialAnimationStyle = go.AnimationManager.AnimateLocations; diagram.model = go.Model.fromJSON(diagram.model.toJSON()); } window.animateNone = function() { window.custom = false; diagram.animationManager.initialAnimationStyle = go.AnimationManager.None; diagram.model = go.Model.fromJSON(diagram.model.toJSON()); } window.animateCustom = function() { window.custom = true; diagram.animationManager.initialAnimationStyle = go.AnimationManager.None; // Customer listener zooms-in the Diagram on load: diagram.addDiagramListener("InitialAnimationStarting", function(e) { var animation = e.subject.defaultAnimation; if (window.custom === false) { // a different button was pressed, restore default values on the default animation: animation.easing = go.Animation.EaseInOutQuad; animation.duration = NaN; return; } animation.easing = go.Animation.EaseOutExpo; animation.duration = 1500; animation.add(e.diagram, 'scale', 0.1, 1); animation.add(e.diagram, 'opacity', 0, 1); }) diagram.model = go.Model.fromJSON(diagram.model.toJSON()); }
该AnimationManager可以通过设置来关闭AnimationManager.isEnabled来false。可以通过重写AnimationManager.canStart来关闭特定的默认动画,或者查询动画即将开始的原因(AnimationManager.animationReasons),然后可能返回false。
如果在动画过程中开始新的事务,则默认动画将停止。对于其他Animation而言,情况并非如此,它们不会被新事务停止,并且可以无限期地继续。
可动画属性
默认情况下,AnimationTriggers和Animation可以为GraphObjects的以下属性设置动画:
另外,Animation(但不是AnimationTriggers)可以为Diagram的以下属性设置动画:
AnimationTrigger类
(2.1版本的新功能)
一个AnimationTrigger用于当其值已更改为GraphObject性质申报动画。定义触发器后,对目标属性的更改将从旧值动画化为新值。在模板中,触发器的定义方式与绑定类似:
// In this shape definition, two triggers are defined on a Shape. // These will cause all changes to Shape.stroke and Shape.fill to animate // from their old values to their new values. $(go.Shape, "Rectangle", { strokeWidth: 12, stroke: 'black', fill: 'white' }, new go.AnimationTrigger('stroke'), new go.AnimationTrigger('fill') )下面是一个例子,一个HTML按钮,它将图形的stroke和fill新的随机值:
diagram.nodeTemplate = $(go.Node, $(go.Shape, "Rectangle", { strokeWidth: 12, stroke: 'black', fill: 'white' }, new go.AnimationTrigger('stroke'), new go.AnimationTrigger('fill') ) ); diagram.model = new go.GraphLinksModel([{ key: 'Alpha' }]); // One node // attach this Diagram to the window to use a button window.animateTrigger1 = function() { diagram.commit(function(diag) { var node = diag.nodes.first(); node.elt(0).stroke = go.Brush.randomColor(); node.elt(0).fill = go.Brush.randomColor(); }); }
AnimationTriggers可以立即调用动画,以已修改的每个GraphObject的每个属性开始一个新动画,也可以(更有效地)将它们捆绑到默认动画(AnimationManager.defaultAnimation)中,并在下一个动画结束时开始交易。可以使用AnimationTrigger.startCondition分别通过值 AnimationTrigger,Immediate和AnimationTrigger,Bundled设置这些行为。默认值AnimationTrigger,Default尝试推断最佳值。如果没有正在进行的事务或Diagram.skipsUndoManager为true ,它将立即开始。
AnimationTriggers仅在GraphObjects的模板中定义,而不能在RowColumnDefinitions或Diagrams上使用。
====================================================
想要购买GoJS正版授权的朋友可以
有关产品的最新消息和最新资讯,欢迎扫描关注下方微信公众号
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:GoJS本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢