- 对象通过标签定义,每个对象存储在一个字典库中,通过唯一ID指定
- 从字典中选定字符,放于显示列表中,即将在下一帧显示的字符。
- 完成后显示列表的内容通过showFrame渲染到屏幕
这是对深度值(depth
)的解释:
每个显示在显示列表上的角色都会被分配一个深度值。深度值决定了角色的堆叠顺序。深度值较低的角色会显示在深度值较高的角色下方。深度值为1的角色会显示在最底层。一个角色可以在显示列表中出现多次,但位于不同的深度层次。在任何给定的深度层次上,只能有一个角色存在。
这里角色对应原文
character
控制显示列表:
PlaceObject
: 添加角色到现实列表。PlaceObject2
和PlaceObject3
: 在显示列表中添加字符,或在指定深度修改字符。RemoveObject
:在显示列表中删除指定的角色。RemoveObject2
:删除指定深度的角色。ShowFrame
: 将像是列表中的内容渲染到显示器上。
较旧的标记
PlaceObject
和RemoveObject
在 SWF 3 及更高版本中很少使用。
剪切层
Flash Player支持显示列表中的一种特殊对象叫做剪裁层。被指定为剪裁层的角色本身不会被显示,而是用来剪裁(或遮罩)放置在它上方的角色。PlaceObject2
中的ClipDepth
字段指定了剪裁层遮罩的最顶层深度。
例如,如果一个形状被放置在深度1处,并且ClipDepth
设为4,那么从深度1到深度4之间(包括4)的所有角色都会被这个深度1处的形状遮罩。而放置在深度4以上的角色则不会被遮罩。
所以剪裁层的作用是将它上方的一定深度范围内的对象遮罩掉,形成一个可见的"剪窗"
创建和实现动画
-
用定义标签定义每一个
character
,每个character
都有唯一的ID,并将其添加都字典中。 -
使用
PlaceObject2
标签将每个字符添加到显示列表中。每个PlaceObject2
标签指定要显示的字符,以及以下属性:- 深度值,确定角色在z轴上的堆叠顺序
- 变换矩阵,变换矩阵决定了被放置角色的位置、比例、因子和旋转角度。同一个角色可以以不同的变换矩阵被放置多次(在不同的深度上)。
- 一个可选的颜色转换,用于指定应用于被放置角色的颜色效果。颜色效果包括透明度和颜色偏移。
- 一个可选的名称字符串,用于标识被放置的角色,供SetTarget操作使用。SetTarget用于在精灵对象内执行操作。
- 一个可选的ClipDepth值,用于指定被放置角色将被遮罩的最顶层深度。
- 一个可选的比率值,用于控制当放置时如何显示形态角色。比率为零时显示形态的起始角色。比率为65535时显示形态的结束角色。
-
使用一个
ShowFrame
标签来将显示列表的内容渲染到屏幕上。 -
使用
PlaceObject2
标签来修改显示列表中的每个角色。 每个PlaceObject2
标签都会为给定深度的角色分配一个新的变换矩阵。不需要指定角色ID,因为每个深度只能有一个角色。 -
使用
ShowFrame
标签来显示角色处于其新位置。 对于动画的每一帧,重复步骤 4 和 5。 如果一个角色在帧与帧之间没有变化,那么在每一帧后都不需要替换未改变的角色。 -
使用
RemoveObject2
标签从显示列表中移除每个角色。只需要深度值来识别要移除的角色。
一旦定义好,就可以在主文件中使用 PlaceObject2
标签显示精灵。PlaceObject
中指定的变换会与精灵内部对象的变换相连接。这些对象的行为就像是精灵的子对象,所以当精灵移动时,精灵内部的对象也会随之移动。同样地,当精灵被缩放或旋转时,子对象也会被缩放或旋转。当精灵从显示列表中移除时,它会自动停止播放。
当精灵被放置在显示列表上时,可以使用 PlaceObject2
标签为其指定一个名称。这个名称用于识别精灵,以便主文件(或其他精灵)可以在精灵内执行操作。这通过 SetTarget 动作实现(参考 ActionSetTarget
)。