Director中的属性
Director中的属性属性是一个Director中频繁使用的概念。任何对象的定义都是由属性来完成的,而在定义的过程中,每个属性则可以看作对当前对象某一方面的描述。
在实际的使用过程中,可以根据属性取值的时效性将其分为两大类:静态属性与动态属性。
一、静态属性
静态属性是一种非实时属性,之所以称之为“静态”,是因为其值不会在影片重新播放时重置。根据控制方法的不同,又可以将其分为纯静态属性与准静态属性。
1. 纯静态属性
纯静态属性无法使用程序控制,只能使用特定的设置窗口。
典型的纯静态属性如剪辑室的通道数(_movie.lastChannel)。这是一个影片属性,无法使用程序控制,需要使用Property Inspector窗口中的Movie标签进行设置。
图1 剪辑室的通道数只能使用Movie标签控制
2. 准静态属性
与纯静态属性相比,准静态属性的不同之处在于可以使用程序控制,而其中一些还可以使用特定的设置窗口。
图2 演员的名称既可以使用程序控制也可以使用Cast窗口设置
典型的准静态属性如演员的名称(memberObjRef.name)。这是一个演员属性,既可以使用程序控制,也可以使用Cast窗口进行设置。
二、动态属性
动态属性是一种实时属性,之所以称之为“动态”,是因为其值会在影片重新播放时重置。
典型的动态属性如角色的宽度。即使在影片播放过程中使用程序改变了角色的宽度,影片重新播放时还是会将其重置为Property Inspector窗口中的取值。
图3 角色宽度会在影片重新播放时重置为Property Inspector窗口中的取值
三、动态属性的保留
动态属性的重置特性使得影片可以不断重播。如果动态属性不能重置,那么再次播放时就无法看到相同的影片。但是在很多情况下,需要避免这种重置,即保留动态属性。以下方法均可在特定条件下达到这一目的:
1. 使用程序控制角色通道
如果只是需要在影片播放过程中保留动态属性,可以使用puppetSprite()将角色通道的控制权交给程序。由于角色通道不再受控于剪辑室,因此可以避免播放过程中的重置操作。
2. 生成剪辑室
如果不仅需要在影片播放过程中保留动态属性,还希望再次播放时属性不被重置,可以使用beginRecording()与endRecording()。通过生成剪辑室,能够使其改变永久化。
3. 变量控制
变量控制也是一种保留动态属性的方法,即通过程序将动态属性的值存储至变量并在需要时读取。与前面两种方法相比,虽然稍显复杂,但却具有更高的灵活性。
[1]