用Director控制动画GIF
动画 GIF 可以非常奖愕挠迷谀愕?Director 作品中。它们很小,相对的比较容易建立,而且也可以用在 Web 页面里。所以如果你正在建立一个 Shockwave 短片并把它和 Web 页放在一起,那么你把动画 GIF 用到 Director 里,你就会发现它可以完成多么完美的场景。但是一旦你把动画 GIF 放进你的电影里,你可能会想到要增加一些控制方法以便于关闭它们。首先,你要从基础开始。
开始,停止和重复
这三个基本的 Lingo 命令是用来控制动画 GIF 的暂停,继续和重复的。当用这些命令的时候,你需要紧记的是:它们只能与一个 sprite 在关联中一起用。例如,你可以说:
sprite (10).resume ()
或者
sprite (10).pause ()
然而,在涉及到一个 cast 成员的时候,你不能用这些功能。所以如果你输入 member (‘‘animGIF‘‘).resume () , Director 会返回一个错误信息,里面会说在对象中没有找到处理者。
在电影中使用暂停和继续的一个简单的方法就是建立一个行为,你要把它放进动画 GIF 中。这个行为可以使正在播放的 GIF 暂停,也可以使暂停的 GIF 开始播放。这个行为的原代码如下:
property pPlayState
on beginSprite me
pPlayState = true
me.updateGIF ()
end
on mouseUp me
pPlayState = not pPlayState
me.updateGIF ()
end
on updateGIF me
if pPlayState then
sprite (me.spriteNum).resume ()
else
sprite (me.spriteNum).pause ()
end if
end
这个行为开始于设置 pPlayState 变量为真,然后会呼叫 updateGIF 处理者。这个处理者就会检查 pPlayState 是否为真。如果为真,那么它就会播放动画 GIF ,否则它就会暂停动画 GIF 。最后,无论何时,只要你点击 GIF ,它都会固定 pPlayState 的值并且以呼叫 ipdateGIF 处理者来确定是播放还是暂停。
控制动画 GIF 的速度
如果你想要控制一个动画 GIF 的速度,那么这里有两条 Lingo 语句你需要使用: playBackMode 和 fixedRate 。
PlayBackMode 语句有三个不同的选项来控制一个动画 GIF 如何播放。第一个选项, #normal ,用动画 GIF 本身的定时信息来确定帧的的播放时间。第二个选项, #lockStep ,像 Director 电影中的 Score 一样以同样的速度播放动画 GIF 的每一帧。这个选项用于确认动画与你电影中的基础帧动画同步。这个选项的基本意思就是说如果你的动画 GIF 有不同长度的帧,那么在播放时就会不同步,直到 playBackMode 被设置成 #normal 。
playBackMode 的最后一个选项是 #fixed 。当你把一个动画 GIF 的 playbackMode 设置成 #fixed ,那么你就可以通过另一个叫 fixedRate 的 Lingo 特性来控制回放( playback )。 fixedRate 特性一个数字,它描述一个动画 GIF 的单独帧的速度。你必须记住当你设置 fixedRate 时,它的值必须是一个整数而且不能为 0― 它至少是 1 。如果你想停止动画 GIF ,你必须用暂停命令。
关于暂停,继续和重复还有 playBackMode 和 fixedRate 特性,它们最大的不同在于 playBackMode 和 fixedRate 是 cast 成员中的特性,而不是 sprite 。所以在你的代码中你必须写明:
member (‘‘animGIF‘‘).playBackMode = #fixed
member (‘‘animGIF‘‘).fixedRate = 20
But if you tried to say
sprite (10).playBackMode = #fixed
并且在 sprite 10 中的成员不是一个动画 GIF ,那么你将得到一个错误信息。
当你把所有的事情放在一起做时,你会吃惊于你可以如此控制一个动画 GIF 。这里有一个电影可以示范 action 中这里提到的 Lingo 。
在你的 Director 电影中使用动画 GIF 是减小文件大小的一个有效的方法,并且潜在的节约你大量的时间,因为你可以使 Director 中己存在的动画 GIF 得不到休息的时间。动画 GIF 的唯一的缺点就是你不能完全的控制它。你不能让一个动画 GIF 跳到一个特定的帧上,而且你不可能轻易的知道哪个帧是在动画 GIF 上的。如果你需要在你的程序中加入这种功能,那么你有两个选择。你将要用位图和电影遁环来重做 Director 里的动画 GIF 或者你在 Director 里可以以 Quicktime movie 的格式导入动画 GIF 。但是这个最后的选择要求用户的机子里安装了 Quicktime 。