Anylogic用户手册3Word文档下载推荐.docx
《Anylogic用户手册3Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Anylogic用户手册3Word文档下载推荐.docx(120页珍藏版)》请在冰豆网上搜索。
动画是由各种形体——如圆,矩形,线段,等等——以及标记和控件组成的绘图。
每个形体都具有一组属性,这些属性定义了这个形体的外观:
位置,高度,宽度,颜色,等等。
典型情况下这些属性按照如图133所示进行组织起来。
图133.动画形体的属性
左面的静态值显示了在编辑器中进行编辑时所指定的此属性的值。
此值也将被作为这一属性的默认值。
右边的表达式定义了在仿真期间此属性的真实值。
在这里你可以将形体的外观与活动对象的任意数据相关联,这样数据的变化也将通过图形的变化反映出来。
如果这一表达式为空,则此属性在整个仿真期间都将保持为默认的静态值。
只有在此形体可见时才计算属性的真实值。
图134示意了一个将动画形体的图形属性与活动对象的数据相关联的例子。
这里圆心的坐标将由活动对象的变量x和变量y动态定义,矩形的旋转角度由对象的成员变量alpha定义。
图134.将图形属性与模型数据相关联
若需定义模型中的数值与图形坐标进行映射的比例,你应使用动画图的Scale(比例),XOffset(X偏移),YOffset(Y偏移)属性。
你可以在动画图的Setupcode(起始代码)和Updatecode(更新代码)中加入代码,以对动画图和模型之间的更为复杂的关系进行定义,而不仅仅是将动画的属性与模型中的某个表达式固定地关联起来。
动画对象的名称用于在代码中对这些对象进行访问。
例
这个例子示意了如何为一个简单的机械模型——一个钟摆——建立动画。
图135.钟摆动画
11.1.2动画显示等级化的模型
在你创建一个被封装的对象时,其对应的动画即自动显示于它的容器对象的动画中。
其中被封装对象的动画称之为被封装的动画形体,并且绘制为一个矩形,其中显示被封装对象动画的内容。
在动画编辑器中你可以移动,缩放,或旋转被封装动画形体,你也可以为其某些属性指定表达式,以允许模型在运行时对被封装的动画形体进行平移,缩放,和旋转。
在被封装动画中,一个形体的运动由两部分运动组成,即在被封装对象中定义的此形体的运动,以及在容器对象中定义的被封装动画形体的运动。
一个容器对象的动画也可以被封装到别的地方,以此类推,就可以进行任意层次的动画封装。
这样,你就可以先创建相互独立的各个图片,然后再用模块化的方法将它们组合起来构成一个十分复杂的动画。
被封装动画在容器动画中的位置和大小都可以动态改变。
为此你可以使用如下两种方法:
●你可以为类或被封装对象的动画的属性指定表达式。
●你可以在容器的动画图中为被封装动画形体的属性指定表达式。
如果一个被封装的对象自身知道它相对于父对象的位置,则你可以使用第一种方法。
这种情况下,由于被封装动画形体的属性(如果定义了)将覆盖被封装动画的属性,因此你需要将被封装动画形体的属性保留为空。
如果容器类知道被封装对象的位置,则你可以使用第二种方法。
如果被封装的对象被动态地创建和销毁,则其对应的动画也将与此对象同步显示和消失。
在某些情况下,你需要手动绘制被封装动画形体。
例如,如果你创建了一个被封装的对象,且没有为此被封装对象类定义任何动画,则不会创建被封装动画形体。
如果你在此后为这个被封装对象类定义了动画,则你需要手动创建被封装动画形体。
为创建一个被封装动画形体,你需要点击对应的工具条按钮,在容器类的动画图中放置一个形体,然后定义这个形体所代表的被封装对象。
在这些都完成之后,被封装动画形体即显示这个被封装对象的动画的内容。
另一个例子:
如果你为复数对象创建动画,则你可能需要手动绘制一个或多个被封装动画形体。
11.1.2.1动画显示被复制的对象
如果一个被封装的对象被进行了复制,则你可以采用两种方法将它的动画放置于容器的动画中:
●为显示复数对象的所有元素,你应首先绘制一个被封装动画形体,其对应的被封装对象名称为此对象的整个“数组”,例如,cars,server。
在这种情况下,不同的被封装动画的位置通常在被封装对象类的动画的属性中指定(上述即第一种方法)。
●若需要只显示此复数对象中选定的一些元素,则你可以绘制所需数目的被封装动画形体,然后为每个形体指定其对应的被封装对象名称,按如下形式指定:
<
被封装对象名称>
,<
序号>
,例如,cars-5,server-0,等等。
这些被封装动画的位置通常直接在其对应的被封装动画形体的属性中指定(上述即第二种方法)。
11.1.2.2动画显示不符合模型等级的结构
尽管在大多数情况下动画结构自然地反应了模型的结构,然而有些时候它们之间并不完全匹配。
这意味着有些时候你需要使用对应于模型等级中不同层次的活动对象的形体来组装成你的动画。
为此你可以采用两种方法:
●如果这些活动对象都已经定义了各自的动画,并且你希望在模型等级结构中位于若干个对象之上的动画中显示这些活动对象,则你可以为所有的中间活动对象定义动画,这些动画中即包含了所需的被封装动画,而不包含其他形体。
●如果你只希望为一个活动对象(例如,根对象)定义动画,则你可以在其对应的动画图中绘制所有的形体,然后将这些形体与被封装的活动对象的数据关联起来。
显然,你应首先保证这些数据都可以访问。
11.2动画图
每个活动对象类都可以有一个与之关联的动画图。
一个动画图即是一组形体。
动画图将形体的属性与活动对象的数据和被封装的对象关联起来,而且定义了此活动对象的动画将在容器动画中什么位置显示,如果容器动画存在的话。
11.2.1动画编辑器
你可以在动画编辑器中使用动画工具条对动画图进行编辑,如图136所示。
图136.动画图编辑器和工具条
►为活动对象类添加一个动画
1.点击Newanimation(新建动画)工具条按钮
,或者
在主菜单中选择Insert|NewAnimation(插入|新动画)。
此时即显示Newanimation(新建动画)对话框。
在Chooseactiveobject(选择活动对象)下拉列表中选择将包含此动画的活动对象类。
2.你也可以在Project(工程)窗口中,右键点击将包含此动画的活动对象类,然后在弹出菜单中选择NewAnimation(新建动画)。
此时即显示NewAnimation(新建动画)对话框。
3.在Nameofthenewanimation(新动画的名称)编辑框中输入新动画的名称。
4.如有必要,选中Addencapsulatedanimations(加入被封装的动画)选框,以向此动画中加入被封装对象的动画。
此外,你可以选定Addlinksbetweenencapsulatedanimations(加入在被封装动画之间的链接)选框,以在被封装动画之间加入链接。
5.点击OK。
►打开一个活动对象类的现有的动画
1.在Project(工程)窗口中双击此动画,或者
在Project(工程)窗口中右键点击此动画,然后从弹出菜单中选择OpenAnimation(打开动画)。
动画编辑器具有在第1.5.2节“图表编辑器通用操作”中描述的通用编辑操作。
一个动画编辑器通常与一个活动对象类相关联,并且具有如下的属性:
属性
Name(名称)——动画的名称。
X——[可选]此动画在容器动画中位置的x坐标的动态表达式(单位为象素)。
Y——[可选]此动画在容器动画中位置的y坐标的动态表达式(单位为象素)。
Rotation(旋转)——[可选]此动画在容器动画中旋转角度的动态表达式(单位为弧度)。
Scale(比例)——[可选]如果定义了此属性,则此图中所有形体的大小和位置都将乘以这个比例。
XOffset(X偏移)——[可选]如果定义了这个属性,则此图中所有形体位置的x坐标都将加上这个值。
YOffset(Y偏移)——[可选]如果定义了这个属性,则此图中所有形体位置的y坐标都将加上这个值。
Excludefrombuild(构建时排除)——如果设置了这个属性,则此动画将被从模型中排除。
Preventframeselection(避免画框选择)——如果设置了这个属性,则无法选择动画的画框。
例如当你的动画中含有一个覆盖了整个动画的矩形,而你希望选择这个矩形,而不是画框时,你即可以使用这个属性。
这里的关键在于,在这样的情况下,矩形与动画画框重合。
因此,如果不设置这个属性,则你无法明确知道你选中了哪一个:
是矩形还是动画的画框。
FlipY-axis(Y坐标反转)——改变Y轴坐标的方向。
如果定义了被封装动画形体在容器动画中的位置和旋转角度的动态表达式,则此动画的对应属性(X,Y,Rotation)将被覆盖。
11.2.1.1动画的原点
动画图中的蓝色十字就是此动画图的原点(0,0)。
图中的原点也标明了坐标轴的方向。
由于一些用户习惯于使用垂直向下的Y轴,而另一些用户习惯使用垂直向上的Y轴,因此AnyLogicTM允许你根据你的习惯更改Y轴的方向。
►设置Y轴方向向上/向下
1.在Project(工程)窗口中点击此动画项目。
2.在Properties(属性)窗口中,选中/清除FlipY-axis(翻转Y轴)选框。
图中的蓝色矩形是此动画的画框,你不能删除此画框。
动画的画框有两个含义。
如果这个动画是根动画,则画框代表了窗口区域。
否则,如果这个动画被封装在另一个动画中,则画框被用于缩放被封装的动画:
使用所指定的比例作为动画画框和被封装动画形体在容器动画中的大小比例。
请注意当动画被封装时,并不会对动画进行裁剪。
动画画框具有所有动画形体都具有的常规属性(请参考第11.2.1.2节,“动画形体的常规属性”)。
你可以为动画指定其背景图片。
►设置一个动画的背景图片
1.在动画窗口中点击此动画的画框。
2.点击Properties(属性)窗口中的Frame(画框)选项卡。
3.点击Browse(浏览)按钮。
此时即显示Open(打开)对话框。
4.浏览找到你希望使用的图像文件。
双击此文件,或者点击Open(打开)按钮,以选择这个文件。
5.设置Stretch|Tile|Center(拉伸|平铺|居中)选项,以设置显示背景图像的方式。
11.2.1.2动画形体的常规属性
动画图中的所有形体都具有如下的常规属性,这些属性显示于Proeprties(属性)窗口中的General(常规)页面中。
Name(名称)——此形体的名称,你可以在代码中使用此名称以访问这个形体。
X——x坐标的静态值|动态表达式[可选](单位为象素)。
Y——y坐标的静态值|动态表达式[可选](单位为象素)。
Rotation(旋转)——旋转角的静态值(单位为角度)|[可选]动态表达式(单位为弧度)。
Width(宽度)——宽度的静态值|[可选]动态表达式(单位为象素)。
Height(高度)——高度的静态值|[可选]动态表达式(单位为象素)。
Fillcolor(填充颜色)——填充颜色的静态值|[可选]动态表达式(类型为java.awt.Color)。
如果这一选框未被选中,则静态颜色为透明。
如果表达式值为null,则动态颜色为透明。
Linecolor(线条颜色)——线条颜色的静态值|[可选]动态表达式(类型为java.awt.Color)。
Linewidth(线条宽度)——线条宽度的静态值|[可选]动态表达式(单位为象素)。
Visible(可见性)——[可选]动态的boolean表达式,用于判定此形体是否可见。
Replication(复制)——此形体的复制因子。
Lockaspectratio(锁定长宽比)——如果设置了此属性,则此形体的长宽比被锁定。
Showname(显示名称)——如果设置了此属性,则这个形体的名称将被显示于动画图编辑器中(但在动画中不显示)。
Excludefrombuild(构建时排除)——如果设置了这个属性,则此形体被从动画中排除。
如果一个形体不具有某个常规属性,则此属性被禁用。
动画形体的名称只用于生成代码,以及从代码中访问形体。
名称将不显示于动画窗口中。
11.2.2动画形体
在这一节我们将详细介绍在动画图中可以绘制的形体。
11.2.2.1矩形
►绘制一个矩形
1.点击Rectangle(矩形)工具条按钮
在主菜单中选择Draw|Animation|Rectangle(绘制|动画|矩形)。
2.在图中点击或拖动鼠标,以创建一个矩形。
矩形没有特别的属性。
11.2.2.2圆角矩形
►绘制一个圆角矩形
1.点击RoundedRectangle(圆角矩形)工具条按钮
在主菜单中选择Draw|Animation|RoundedRectangle(绘制|动画|圆角矩形)。
2.在图中点击或拖动鼠标,以创建一个圆角矩形。
Radius(半径)——此矩形的圆角半径的静态值|[可选]动态表达式(单位为象素)。
11.2.2.3线段
►绘制一条线段
1.点击Line(线段)工具条按钮
在主菜单中选择Draw|Animation|Line(绘制|动画|线段)。
2.在图中拖动鼠标,以绘制一条线段。
你可以为线段的Beginpoint(起点)和Endpoint(终点)分别设置如下属性。
X——此点x坐标的静态值|[可选]动态表达式(单位为象素)。
Y——此点y坐标的静态值|[可选]动态表达式(单位为象素)。
Style(风格)——端点的风格。
如果设置为Arrow(箭头),则在端点处绘制一个箭头。
Size(大小)——箭头的大小。
11.2.2.4折线
►绘制一条折线
1.点击Polyline(折线)工具条按钮
在主菜单中选择Draw|Animation|Polyline(绘制|动画|折线)。
2.在图中点击以设置折线的每个点。
3.双击以结束绘制这条折线。
#points——[可选]此折线中点的数目的动态表达式。
X[index]——[可选]此折线中各个点位置的x坐标的动态表达式(单位为象素)。
Y[index]——[可选]此折线中各个点位置的y坐标的动态表达式(单位为象素)。
Begin|Endpointstyle(起点|终点风格)——折线的起点|终点的风格。
如果设置此属性为Arrow(箭头),则在起点和终点处绘制箭头。
Begin|Endpointsize(起点|终点大小)——起点|终点箭头的大小。
Closedpolyline(闭合折线)——如果选择了这个属性,则将绘制一条线段连接折线的起点和终点以使折线闭合。
折线的每个点在模型运行时都可以控制。
你可以定义动态表达式以指定折线的点的数目。
折线点的坐标也可以使用动态表达式进行定义。
你可以在X,Y坐标的表达式中使用预定义的符号index来表示当前点的索引值。
点的索引值是从0开始的,即,第一个点的索引为0。
►移动折线上的一个点
1.用鼠标拖动这个点。
►向折线中加入一个显著点
1.选中此折线。
2.点击EditPoint(编辑点)工具条按钮
在主菜单中选择Draw|EditPoints(绘制|编辑点),或者
右键点击此折线,然后在弹出菜单中选择EditPoints(编辑点)。
此时折线上的点即应变成黄色。
3.拖动折线的一段,以创建一个显著点,或者
4.右键点击折线的这段,然后在弹出菜单中选择AddPoint(增加点)。
►从折线中删除一个显著点
1.选中这条折线。
2.点击EditPoints(编辑点)
工具条按钮,或者
3.右键点击需要删除的点,然后从弹出菜单中选择DeletePoint(删除点),或者
拖动这个点到折线上相邻的点上。
被拖动的点即消失。
11.2.2.5椭圆
►绘制一个椭圆
1.点击Oval(椭圆)工具条按钮
在主菜单中选择Draw|Animation|Oval(绘制|动画|椭圆)。
2.在图中点击或拖动鼠标,以绘制一个椭圆。
Radius1(半径1):
椭圆的第一个轴(水平轴)的半径的静态值|[可选]动态表达式(单位为象素)。
Radius2(半径2):
椭圆的第二个轴(垂直轴)的半径的静态值|[可选]动态表达式(单位为象素)。
11.2.2.6图像
►绘制一个图像
1.点击Image(图像)工具条按钮
在主菜单中选择Draw|Animation|Image(绘制|动画|图像)。
2.在图中点击或拖动,以设置图像的矩形区域。
Imageindexexpression(图像索引表达式)——[可选]动态表达式,定义了所要显示的图像在列表中的索引值(整数,从0开始)。
如果这一属性保留为空,则假定索引值为0。
Images(图像)——图像文件文件名的列表。
你可以使用Add(添加)和Remove(删除)按钮来编辑这个列表。
Imageindexexpression(图像索引表达式)属性定义了当前将显示这个列表中的哪一幅图像。
Originalsize(原始大小)——如果选定了此属性,则保留图像的原始大小。
如果你希望移动你的工程文件,首先你需要将你的图像嵌入到工程中。
否则,你需要在移动之后更新所有图像的路径。
嵌入的图像存储于AnyLogicTM工程文件中。
如果需要,你可以将这些图像再导出到图形文件中。
►嵌入一幅图像到工程中
1.在Images(图像)列表中选定图像文件名。
2.点击Embed(嵌入)按钮。
►导出一幅被嵌入的图像
1.在Images(图像)列表中选定此图像名。
2.点击Export(导出)按钮。
此时即显示SaveAs…(另存为)对话框。
3.指定此图像文件的名称。
4.浏览找到你希望保存此文件的文件夹。
5.点击Save(保存)按钮。
11.2.2.7文字
►绘制一条文字信息
1.点击Text(文字)工具条按钮
在主菜单中选择Draw|Text(绘制|文字)。
2.在图中点击或拖动以选定一个矩形区域。
►修改文本框中的内容
1.双击此文本框。
2.编辑此文本框的内容。
3.点击图中的空白区域,以保存修改后的文字,或者
按Esc键,以结束编辑。
为创建多行文本,你可以使用文本形体的属性。
根据JavaTM约定,文本框的原点是第一行的左下角点。
Text(文字)——[可选]文本框的内容。
Color(颜色)——文字颜色的静态值|[可选]动态表达式(类型为java.awt.Color)。
如果这里的选框未被选定,则静态颜色为透明。
如果表达式的值为null,则动态颜色为透明。
Font(字体)——文字的字体。
Choose(选择)——这一按钮将打开Font(字体)对话框,以修改字体的属性。
11.2.2.8枢纽
枢纽用于将动画形体编成组,以及对这组形体进行旋转,对坐标系进行平移。
通过定义枢纽的动态属性(例如,X,Y,Rotation等等),你可以移动一组形体,以及将它们围绕这个枢纽进行旋转。
枢纽本身是不可见的。
►绘制一个枢纽
1.点击Pivot(枢纽)工具条按钮
在主菜单中选择Draw|Animation|Pivot(绘制|动画|枢纽)。
2.在图中点击你希望放置此枢纽的位置。
►向枢纽组加入/从枢纽组中移除形体
1.右键点击此枢纽,然后从弹出菜单中选择Add/RemoveShapes(加入/移除形体)。
2.点击需要从此枢纽组中移除/向此枢纽组中加入的形体。
3.点击空白区域以结束操作。
当一个形体被加入到一个枢纽组中之后,这个形体的动态坐标的原点即为此枢纽的坐标,而不是动画的原点(0,0)。
你可以通过这样来为动画中的一部分进行坐标系统平移。
Customshapetemplate(自定义形体模板)——如果设置了这个属性,则被加入到枢纽中的这组形体即被认为是一个自定义的形体。
你可以在运行时创建任意多个你所需要的自定义形体。
Setupcode(设置代码)——[可选]插入到此枢纽组的setup()方法末尾的JavaTM语句。
这些代码将在枢纽组的设置阶段进行调用。
枢纽组的设置过程只在动画创建时执行一次。
Updatecode(更新代码)——[可选]插入到此枢纽组的update()方法末尾的JavaTM语句。
这些代码在每次将要重新绘制这个枢纽组的时候进行调用。
Additionalclasscode(附加的类代码)——[可选]插入到此枢纽组声明中的JavaTM语句。
如果一个枢纽组被用作自定义的形体模板,则此形体将不会被自动创建,而需要你在运行时创建所需的自定义形体。