这个问题是一个非常基础的问题, 不过也是学习lingo 的一个难点。 我可以试着用我的理解来解释一下。
正如反斗星所说的, director是面向对象的环境, 不过几种类型的脚本还不完全是仅仅针对对象来使用。
简单地说, Director的Lingo 是响应事件来激发scripts的。
事件 ------------> 信息 -------------〉句柄 (Event generates message, and then message triggers handler)
例如: 电影开始播放(当你按下play的按键)是一个事件(the movie starts), 它会产生一个信息(a message called startMovie) 用lingo来说就是startMovie, 这个信息会传递给movie 本身, 来查找是否有和该信息相关的句柄来给movie 指令, 如果你写了一个脚本使用
on startMovie
指令
end
这个句柄就是专门响应startMovie信息的。 所以电影一开始, 就会执行这个handler 里的指令。
不要忘记Director 是一个Timeline based 编辑环境, 理解timing (时机), 对于Lingo的应用是最关键的, 所以Director自身就内建了一些基于不同情形(实际上还是不同的时机)的句柄, Director 7 有37个的样子, 当然你可以写自定义的句柄。那是后话。
从另一个方面来看, 一个Director电影的实现是通过sprites在舞台(stage)上不同时间(frame)的出现和表演来完成的, 对于电影的控制从面向对象的角度来考虑, 就成了对于sprites , 产生sprites 的cast members, frames, 以及电影本身的控制, 这也就是这个问题的由来, 简单地说, Lingo有这四种基本的script 类型, 精灵脚本(sprite script),角色脚本(cast script), 帧脚本(frame script), 和电影脚本(movie script), 其中精灵脚本和帧脚本又都被称为行为脚本(behavior script)。 这几种脚本的句型和语法是一样的, 使用的句柄却并不相同, 因为事件产生的信息是broadcast 给整个电影的, 不过不同的对象可以接受的信息却是不一样的, 例如startMovie这个信息对于sprite来说就全无作用, 因为电影
刚开始的时候, sprites 还不在舞台上, 你可以看到“刚”这个timing 是多么的关键。
好既然谈到broadcast, 那就必须要说一说信息传递的层次, 一旦高级别层次的script 收到了信息它就会就地消化该信息,如果没有高层次的script消化, 它就传到下一个层次, 以此类推。Lingo的信息传递层次是:sprite script ----> cast script -----〉frame script -------> movie script, 其实这个结构也很好记忆, sprite好比剧情里的角色, 当然最先接受信息, 其次是扮演角色的演员(我个人觉得不翻译sprite, cast member等词的好处就是不要造成歧义, 如果一定要翻译, 我倾向于sprite 译成角色, cast member译成演员。 因为常识告诉我们一个演员可以根据剧情的需要扮演不同的角色, 这只是我的一家之言),再下来就是frame , 最后是movie.
所以使用那种script类型取决于你所控制的对象和使用的时机。
最后要说的是, 行为脚本(sprite script 和 frame script)需要附加在score(分镜表)里的sprites 或behavior channel才会起作用, cast member script 是附加在cast member(cast window)上的, movie script 不需要附加在任何对象上。
我相信这样的解释不可能令你完全明白, 你还需要读一下帮助文件以及有关的书籍, 再加上实践。而且这个解释只是为了理解的方便, 还有一些细节并未提及而且也已超出论坛可以解释的范围了。
如有错误欢迎指正和讨论。