竞赛:| 全国大学生数模竞赛 | 全国研究生数模竞赛 | 全国大学生电工数模竞赛 | 美国"MCM/ICM" 竞赛 |
 资讯:| 数学理论 | 交叉学科 | 基础教育 | 考研数学 | 学术动态 | 编程交流 | 网络安全 | 经验技巧 |
 下载:| 数 学 篇 | 算 法 篇 | 建 模 篇 | 编 程 篇 | 数 据 篇 | 软 件 篇 | 考 研 篇 | 交叉学科 |
 视频:| 大学数学 | 大学英语 | 计 算 机 | 法律课程 | 政治课程 | 经济管理 | 数学建模 | 高考数学 |
 功能:| 矩阵论坛 | 学校协会 | 挑 战 赛 | 人才招聘 | 数学问吧 | "MC"理工浏览器 | "MCQ"即时通讯 |

 
会员中心
社区论坛
加入收藏
联系我们
您现在的位置: 数学中国 >> 资讯无限 >> 计算机技术 >> 编程交流 >> 正文
【字体:           
 
lingo 教程
作者:未知    文章来源:本站原创    点击数:    更新时间:2005-11-27

Lingo基本概念

l        Lingo简介

LingoDirector中的描述式语言,使用Lingo可以增加movie的互动性,如跳到不同的movie、使用鼠标与键盘的回馈、输入信息、移动对象、按按钮、播放音效、控制影片播放等等。

Lingo的语法就像Basic一样简单,也有一般程序语言的变量、函数、判断、循环等基本概念。而在DirectorHelp中也附了一本最方便的Lingo字典:Using LingoHelp>Lingo Dictionary)。

 

l        术语简介

¨           Command(指令)

Ø          使Director去做某些动作的命令,如go可跳到指定的framemovie

¨           Function(函数)

Ø          根据呼叫函数时所传入参数(或不传入),会传回一个值,如date()传回今天日期、max(a, b)会传回ab中的最大值。

¨           Handler(处理函数)

Ø          movie在播放时会产生一些事件(Event),Handler是用来接收并处理这些事件的,如以下程序代码(其中on mouseUp ... end即是一个Handler),当鼠标click后,便让系统「哔」一声。

on mouseUp

  beep

end

Ø          使用者可以自订处理函数,将有用的程序代码集合起来重复利用。

¨           Event(事件)

Ø          movie在播放时会产生的事件,如movie开始或停止时、鼠标按下时、键盘按下时,都会有事件产生。

¨           Variable(变数)

Ø          变量是用来储存数值、字符串、symbollist、对象的,可以用等号(=)去指定一个变量,如以下的程序代码就是将myVar的值设为15

myVar = 15

¨           Constant(常数)

Ø          Director内定的一些固定值,使用者无法改变其值,如TABEMPTYRETURN等。

¨           Keyword(关键词)

Ø          具有特殊意义的保留字,自订变量不可用Keyword的字作为变量名称。如endHandler的结尾。

¨           Operator(运算符号)

Ø          将一个或以上的值计算出新的值出来。如加减乘除分别为+-*/

¨           Property(属性)

Ø          对象都会有些属性,如spriteblendvisible等属性。

 

l        Script的种类

¨           behavior(行为)

Ø          可细分为sprite behaviorframe behavior,附加(attach)在sprite上的称sprite behavior,而放在scorescript channel的称frame behavior

Ø          一个behavior可附加在多个sprite上,达到重复利用的特性,只要编辑此behavior,则同时会影响所有附加此behaviorsprite

¨           movie script

Ø          movie script对目前的整个movie都有作用,不论在哪个frame或在哪个sprite,都可以呼叫movie script中的处理函数。

Ø          movie script能处理movie开始、结束播放时的事件,常用于程序的初始化以及结束时释放资源。

Ø          如果是共享的自订处理函数,可以放在movie script中供所有程序使用。

Ø          movie script可处理整个movie的键盘、鼠标事件,不过通常还是由behavior来处理比较适合、比较好管理。

¨           parent script

Ø          用于OOP(对象导向程序设计)的script,过于进阶,在此不详述。

¨           cast member script

Ø          直接附加在cast member上的script。因为管理不易、重复利用度不高,一般较少用。

 

l        变量可见范围

¨           全域变数

Ø          global将变量宣告成全域变量,可让其它地方使用此一变量,如下程序代码。若一次宣告二个以上的变量,则用逗点(,)隔开即可。

global gUserName

global gGameLevel, gSize

Ø          二个不同的script中若都要用到某全域变数,则二个script中都要以global来宣告。

Ø          在全域变数的命名上,习惯会将变量名称最前面加上一个g,以便区别,如userNamegUserNamesizegSize(非必须,但建议)。

¨           属性变量

Ø          仅能用在behaviorparent script

Ø          property将变量宣告成属性变量,可让该script中任何handler使用此一变量,如下程序代码。若一次宣告二个以上的变量,则用逗点(,)隔开即可。

property pIdNum

property pName, pIsLock

Ø          在属性变量的命名上,习惯会将变量名称最前面加上一个p,以便区别,如idNumpIdNumnamepName(非必须,但建议)。

¨           区域变量

Ø          不特别指定成全域变量或属性变量者,即为区域变量,其值只在定义此变量的区块中有效;出了此区块,变数便会消失,不会记录。

 

l        各种数据型态的表达

¨           字符串

Ø          用双引号括起来的即为字符串,如 "中英皆可, nice!" 即是一段字符串。

¨           整数

Ø          不含小数的数值为整数,整数范围介于-2,147,483,648+2,147,483,647间,另外可以用integer()函数将浮点数转成整数。

¨           浮点数

Ø          含小数的数值为浮点数,可以用float()函数将整数转成浮点数。

¨           symbol(符号)

Ø          乃是供使用者自订之常数,须以井字号开头,如:#myName#color等。

Ø          符号和字符串类似,但比字符串执行更有效率。

¨           常数

Ø          Director内定的一些固定值,使用者无法改变其值,如TRUEFALSEVOIDEMPTYBACKSPACEENTERQUOTERETURNSPACETAB等皆为常数。

¨           cast member

Ø          在程序中常会要指定某个cast member,如一个名为"ball"cast member,在名为"toy"cast中,指定的方式即为member("ball", "toy")。注意,如果在该cast中有二个以上的cast member皆命名为"ball"时,Director会采用编号较小的那一个,故每个cast member命名最好都不一样。

Ø          如果省略cast的名称亦可,如上例可改成member("ball"),不过Director会由第一个cast搜寻到最后一个cast,采用第一个找到、且命名为"ball"cast member

¨           sprite

Ø          sprite(1)指第1channelspritesprite(2)指第2channelsprite,以此类推。

 

l        运算符号

运算符号主要是将数据作运算、结合、比较、修饰等,种类如下:

¨           数学算符

Ø          加(+)、减(-)、乘(*)、除(/),和数学计算规则相同,由左至右计算,先乘除后加减。

Ø          另有求余数(mod)算符,如12 mod 5的结果会为2

Ø          用一组小括号( )可以将包围起来的算式优先计算,如下程序代码:

--以下结果为14

result = 2 + 4 * 3

--以下结果为18

result = (2 + 4) * 3

¨           比较算符

Ø          等于(=)、不等于(<>)、小于(<)、小于等于(<=)、大于(>)、大于等于(>=

Ø          用于比较数值、字符串的大小或是否相等,结果为TRUE(真)或FALSE(假)

¨           逻辑算符

Ø          and:二者皆为TRUE时,结果才为TRUE,否则结果为FALSE

Ø          or:二者其中一者为TRUE或二者皆为TRUE时,结果才为TRUE,否则结果为FALSE

Ø          not:若原本的值是TRUE,结果即为FALSE;若原本的值是FALSE,结果即为TRUE

¨           字符串算符

Ø          ":标明字符串的起点和终点,如 "中英皆可, nice!" 即是一段字符串。

Ø          &:连结二段字符串

Ø          &&:连结二段字符串,并在二段字符串间多加上一格空格符。

 

l        语法

¨           啰嗦语法(verbose syntax)与点语法(dot syntax

Ø          早期Lingo采用「啰嗦语法」,语法接近英文文法,缺点是太啰嗦,遇到太复杂的程序时会很难维护。从Director 7.0之后Lingo加入了「点语法」,让程序代码变得更简明清楚。目前是二种语法皆支持,建议以「点语法」来撰写程序。以下程序代码分别用二种语法撰写,皆为将sprite 1cast member名称设为"ball"

--啰嗦语法

set the name of the member of sprite 1 to "ball"

--点语法

sprite(1).member.name = "ball"

¨           空格符

Ø          Lingo使用空格符分隔程序中的每个字,而多余的空格符会被程序忽略而不会造成任何影响,所以可以利用空格符来对齐程序代码,让它看起来易读些。

¨           大小写

Ø          Lingo不分大小写,若一个变量写成usernameUserName都会被视为同一个变量。不过,养成一个良好的习惯:将不同地方的变量大小写固定一种写法,对程序代码阅读与维护都是有帮助的。

¨           批注

Ø          只要程序代码前面加上二个短横线(--),该符号后的文字便为批注,程序不会去执行。如以下程序代码。

--这是一段批注,这段不会被执行

result = a + b *5     --写在这里也算是批注

Ø          批注主要用途是为程序加注说明,即使是自己写的程序,一段时间后也会忘记原始在写程序时的架构,所以为你的程序写批注是一定要的。

Ø          有时写程序时遇到bug或想暂时把某些程序功能关起时,也可以用批注的方式,暂时让程序不会去执行到某段程序代码。

¨           简写

Ø          Lingo有些指令中,部分字可以省略,如go to frame 10可以简写成go frame 10,甚至可写成go 10

 

l        程序流向控制

一般程序代码会从上往下一行一行执行,如果使用ifcaserepeat等条件或循环可让程序的流向作改变。

¨           条件判断

Ø          使用if

--如果......

if x > 10 then

  go frame 30

end if

--如果......否则...

if y < 5 then

  put "y小于5"

else

  put "y不小于5"

end if

--多层「如果......否则...

if z = 1 then

  put "z1"

else if z = 2 then

  put "z2"

else if z = 3 then

  put "z3"

else

  put "其它的情况"

end if

Ø          使用case。以下程序代码为判断按下的按键为何:

case (the key) of

  "A":

    put "使用者按了A"

  "B", "C":

    put "使用者按了BC "

  otherwise:

    put "其它的情况"

end case

¨           循环

Ø          使用repeat

--