Lingo魔法书--事件和脚本类型

4/7/2006来源:Director教程人气:10376

一、事件与命令

事件

  在上次的教程中,我们已经初步试验了Lingo的编写和运行.这次我们要对于Lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。还记得上次我们让电影停在某帧时候的脚本是如何的么?

On exitframe

 go the frame

end

  这里面就包含了一个Lingo的最基本的一点。Lingo是基于事件(event)的。当某个事件发生的时候,才会执行下面的动作。在上面这个脚本中 go the frame这句话是在 On exitframe(退出改帧)的时候执行的on exitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。同样,下面的一些都是Lingo的也就是事件。

 

 

On mousedown   --当鼠标按下

  Lingo语句

end

 

On startMovie --电影一开始

  Lingo语句

end

 

On enterFrame --当播放头进入一帧

  Lingo语句

end

 

On beginsPRite  --第一次播放这个sprite的时候

  Lingo语句

end

 

On keydown  --当键盘按下键的时候

  Lingo语句

end

 

 什么时候采取什么样的事件呢?这是和脚本的类型有关的。别着急等会儿我们一个个来看。

命令:知道了什么是事件以后,就简单了。在事件当中的一些语句就是命令。比如go the frame这句就是一个命令。它的作用可以停止播放头。最后我们用一个形象的比喻来作为事件和命令的解释。

On 走进屋子

 喝水

end

发现了么?当走进屋子(事件)喝水(动作)

 

二、脚本类型

  Lingo的脚本类型分为frame脚本,sprite脚本, cast脚本和movie脚本。在这里我不想把脚本前面的关键字翻译成为中文因为这样可能容易引起歧义。区分这些脚本的类型的方法就是看这些脚本写在什么位置上。frame脚本写在帧里面。Sprite脚本写在Sprite上,Cast 脚本写在Cast上,而Movie脚本写在电影中不依靠任何的其他帧和角色。这样写看起来有点象废话。不过等下解释了大家就会明白的。

frame脚本

 写在帧中的脚本就是frame脚本。播放头在这帧中的时候就会执行frame脚本。编写frame脚本,只要双击帧脚本通道,系统就会弹出窗口。此时就可以编写frame脚本。

  我们上一个例子中用到的第一个脚本就是帧脚本。我们是在Score(分镜表)的脚本通道里面写的。我们当时需要把播放头停止在第5帧。这个动作要求在第5帧画面的时候执行。并且和别的sprite 或者Cast都没有关系。仅仅是在帧发生。于是我们采用在帧脚本。在帧脚本通道第5帧的地方双击。系统弹出窗口,默认的事件为on exitframe me 当帧退出的时候,我们执行下面的命令,停在原地。

  常用的frame脚本事件有。

 

on enterframe --当播放头进入该帧的时候

  lingo语言

end

 

on exitframe --当播放头移处该帧的时候

  lingo语言

end

 

Sprite脚本

  Sprite脚本应用于Sprite中。我们把Cast库中的演员拖到舞台之上以后就是Sprite了。在舞台上对准一个Sprite按右键在菜单中选择Script系统弹出对话框。这个脚本窗口里写的就是Sprite了。

  Sprite脚本在Sprite的一系列操作中才会有作用。比如,单击Sprite,双击sprite,鼠标在sprite上面,鼠标移出sprite。当我们想要对舞台上的某个东西操作,来发生动作的时候就可以用Sprite脚本了。上次的例子中我们要求按一个按钮跳转到第X帧。使用的就是Sprite脚本。那段代码就是

On mousedown

 go frame 15

end

当鼠标按下按钮这个Sprite的时候,播放头到第15帧去。

Sprite中常用的一些事件主要有

On mousedown (鼠标按下)On mousup(鼠标抬起)On mouseleave(鼠标离开) On mousewithin(鼠标在对象内)。

 

Cast脚本

  Cast脚本是写给Cast(演员)的。在角色库中可以编写。对准一个cast按右键盘,选择里面的Cast member Script,弹出窗口中编写的就是Cast脚本。当对某Cast进行一些操作的时候Cast脚本就开始发挥作用。Cast常用事件何Sprite基本相同。

 

读到这里读者稍微思考一下就会发现一个问题。好像Cast脚本和Sprite脚本差不多?

下面我们来回忆一下Cast和Sprite的关系。

  角色库中的叫做Cast,拖到舞台上就叫做Sprite。一个Cast可以对应多个Sprite.当我们对一个Cast编写了脚本之后,电影中所有相应的Sprite都具有了相同的脚本而无需再次编写.因为Sprite就是基于Cast而产生的.例如上面图中给Cast圆编写了脚本之后.舞台上三个Sprite都具有了相同的脚本.读者接下来就会有另外一个疑问当舞台上的Sprite也有了脚本同时Cast也有脚本的时候谁优先执行呢?答案是Sprite脚本优先执行.为了帮助大家想通.时刻记住Director是按照电影的观念来安排的.Cast就是演员,演员都有自己的个性.Sprite是演员扮演的人物,戏中的人物都是有戏中人物的个性的.当戏开演的时候谁的个性占上风呢?显然是戏中的人物个性占上风.

Movie脚本:

  Movie脚本不依赖任何一个Cast,sprite,frame.他可以独立在电影内存在.凡是在电影中全局性的.还有\"经常性\"的交互时间都在这里写的.还有电影一开始的时候和结束的时候发生的命令也要写在这个里面.

下面举出一些Movie脚本独有的一些事件.

On startmovie 电影开始的时候

On StopMovie. 电影结束的时候

On idle 系统空闲的时候没有任何脚本被执行的时候.

Movie脚本的编写 单击工具栏上的就可以了.