主题:  Lingo字典

5D荣誉版主

职务:版主
等级:1
金币:10.0
发贴:177
注册:2000/9/17 8:56:36
#12000/11/23 12:07:39
以下是我以前从书中摘录的。先贴上从运算符到C部分,如果大家感觉还可以的话,我再贴上后面的。
----------------------------------------------------------------------------------------------

Lingo 的运算符
1、Lingo 的运算符
运算符是任何一种语言中最基本的要素,它可以帮助变量值达到运算、比较、分配等
功能,所以优先来介绍它。
一般来说运算符不外具有计算、比较等功能,而在Lingo中,有很多运算符是与现实生
活中的符号相同的,请参考表1。
表1:
符号 功能
# 定义符号
- 负号
-- 说明符号
& 连接两字串
&& 连接两字串,但在两字串之间加入一个空格键
* 乘号
+ 加号
/ 除号
- 减号
< 小于
<= 小于等于
<> 不等于
= 等于
> 大于
>= 大于等于
[ ] 阵列符号
连接两行的指令为同一表达式
( ) 括弧

#符号
语法:
#symbol Name
定义一个符号,这个符号在Director中,是另外一种对象的类型,与字串、整数、浮点
数等类似。使用符号的原因是因为它的速度比字串来得快,所以可以利用符号代替字串,
通常在#之后可接一个名称,例如:
#newType
这表示有一个符号为newType,事实上它可以当作是一个值,是指定给某一个变量的,
例如:
put #newType into newType
这表示将#newType 这个值放在变量newType 之中。
符号可以与阵列配全着一起使用,例如:
[#a:1, #b:2, #c:3]
这就表示一个含有内容的阵列property list,其中的项目是一个符号对应一个数值。
可以视符号为这个数值的描述文字,与字串比较起来,符号的处理速度比较快,所以
某些时候选择符号是比较好的做法。当然不一定非这样用不可,但是符号的确是一个很
方便的工具。

-符号
语法:
-expression
算术符号中的负号。它的功能是可以将某个数值变为负数,具有算术式中的减号性质。

--符号
语法:
--[comment]
在编写程序时希望为程序加上说明的文字,以便以后的维护工作,如图1所示。

图1就是一个很好的例子,因为在指令的最前面记录着程序的编写者及编写的时间。
在每一行文字的最前面加上--号,即表明这一行文字不是程序,而是一行说明文字,这
对以后的维护是很有帮助的。

&符号
语法:
expression1 & expression2
这个符号是字串的指令,表示是将两个字串连接后,而成为另一个字串,例如:
put "This is" & "a book." into Thisbook
这表示将变量值设定为两个字串的边接,结果为This is a book。

&&符号
语法:
expression1 && expression2
这个符号与&唯一不同的地方是在两个字串连接时,在字串间加上一个空白字符。例
如:
put "This is" && "a book." into Thisbook
则Thisbook 变量中的值为"This is a book."很明显,在is 与a 之间多了一个空格。

*符号
语法:
expression1 * expression2
算术符号中的乘号。

+符号
语法:
expression1 + expression2
算术符号中的加号。

/符号
语法:
expression1 / expression2
算术符号中的除号。

<符号
语法:
expression1 < expression2
算术符号中的小于号。

<=符号
语法:
expression1 <= expression2
算术符号中的小于等于号。

<>符号
语法:
expression1 <> expression2
算术符号中的不等于号。

=符号
语法:
expression1 = expression2
算术符号中的等于号。

>符号
语法:
expression1 > expression2
算术符号中的大于号。

>=符号
语法:
expression1 >= expression2
算术符号中的大于等于号。

[ ]符号
语法:
[entry1, entry2, entry3, ...]
可以视为是一种阵列(List)的写法,它的类型主要有两种,一种是线性的阵列,另一
种是含有内容(property)的阵列,例如:
[1, 3, 5]就是线性的阵列,每一个项目就是它的值。
[#one:1, #three:3, #five:5]则是一个含有内容的阵列,每一个项目另外含有各自的值。

符号
如果在Script视窗中,无法在一行之内完成指令时,势必要用第二行来完成剩余的指令,
所以这个符号可以帮助系统辨认这两行的文字是否属于同一个指令。

( )符号
语法:
(expression)
如果指令需要设定执行的先后次序,可以使用小括弧将它们括起来,小括弧中的指令
将会先执行。


Lingo的指令 (A~C)
abort
语法:
abort
当一个Handler中的指令被执行时,可以利用这个指令来中断剩余的指令所执行的动作。
也就是说,一旦碰到这个指令,剩余的指令将不再执行而离开这个Handler。
on flyUp
[statements]
if stopFly = TRUE then
abort
end if
go to the frame
end
从上述的例子来看,似乎在statements中可能会有死循环的感觉,所以就要利用一个变
量stopFly来判断,若这个变量为真时,就会离开此handler,所要使用的指令正是abort。

abs
语法:
abs (numericExpression)
取一个数值的绝对值。

actorList
语法:
the actorList
在这个阵列中所存放的都是一个对象,而不是一般的值。这些对象可以执行的有如
perFrameHook的指令,也就是每当播放头移到一个新的镜头上时,就会执行perFrame
Hook中的动作。而actorList则是每当播放头移到一个新的镜头时,就会执行这个阵列中
的所有对象,因为对象都是指令,所以也就等于执行这些指令。
add the actorList, birth (script"MovingBall", 1, 200, 200)
如果要将actorList中的对象移去,只要将它设为空的阵列即可,如:
set the actorList = [ ]

add
语法:
add linearList, value
为一个线性阵列(Linear List)加入一个数值,例如:
set newList = [4, 3, 2]
add newList, 1
结果的线性阵列为[4, 3, 2, 1]。

addAt
语法:
addAt list, position, value
这与add相类似,也是加入线性阵列一个值,但是addAt可以指定所加入的位置,例
如:
set newList = [4, 3, 2]
add newList, 2, 1
结果的阵列为[4, 1, 3, 2]

addProp
语法:
addProp list, property, value
这个指令的功能与add相同,只是它所应用的不是一个线性的阵列,而是一个含有内
容的阵列,所以多了一个参数,请看下列所示:
set newList = [#four:4, #three:3, #two:2]
addProp newList, #one, 1
结果为[#four:4, #three:3, #two:2, #one:1]。

ancestor
语法:
property ancestor
ancestor 是一个property,它表示子对象可以引用父程序之外的Handler。换句话说,
就是可以将部分的handlers放置在另一个script之中,而这个script中所含有的handler
可以被其它的子对象引用。例如:
property breed, ancestor
on birth me
set breed = "Mutt"
set ancestor of me to birth (script "Animal")
set the legCount of me to 4
return me
end birth
为一个父程序,但是因为它说明了一个ancestor的property,而且指定它为Animal
这个Scirpt,所以只要是Animal中的handlers都可以被子对象所引用。
下列又是另一个parent script,而且也使用Animal当作它的ancestor,这个卡司成
员的名称为man。
property race, ancestor
on birth me
set race to "African"
set ancestor to birth (script"Animal")
set the legCount of me to 2
return me
end birth
那么我们来看一看Animal中的handler到底有哪些,下列是Animal Script中的程序:
property legCount
on birth me
return me
end birth
on eat me, what
put"Eating" & what
end
接下来产生一个子对象。
set manChild to birth (script"man")
它表示manChild为一个子对象,而且它的parent scirpt 的名称是man的script。
如果我们要查询manChild中的legCount变量值为何,可以在message视窗输入如下
的指令:
put the legCount of manChild
结果值为2。
如果我们要查询manChild 之中的race 变量值为何,可以在message视窗输入如下
的指令:
put the race of manChild
结果值为"African"。
因为在man的script中说明了ancestor,所以可以使用Animal中的eat handler,如果输
入指令如下时:
eat manChild,"apple"
结果值为"Eating apple"。
图2是另外一个范例。

在图2中,BW Parent 也是一个Parent Script,但是它在最前面说明了一个property
ancestor,而且Ancestor Ball Script是它的ancestor,所以在Ancestor Ball Script中的
Handlers,子对象都可以去使用。除了BW Parent之外,图3也是一个Parent Script。

图3 Color Parent
那么来看一看ancestor 中的handler到底有哪些,如图4所示。

图4 Ancestor Ball Script
图4是Ancestor Ball Script 的程序内容,我们可以发现on animateBall me的这个
handler,所以在子对象中是可以引用到此handler的。

and
语法:
logicalExpression1 and logicalExpression2
判断前后两个逻辑值的“与”值。

append
语法:
append list, value
将一个值加在线性阵列的最后位置上,例如:
set newList = [4, 3, 2]
append newList, 1
结果为[4, 3, 2, 1],这个指令与add不太相同的地方,是它只能加在阵列的最后位置
上,而不管阵列是否经过排序。

atan
语法:
atan(number)
取得一个数值径度的角度值,径度值位于-π/2与π/2之间。

backColor of cast
语法:
set the backColor of cast castName to colorNumber
设定文本对象的背景颜色。

backColor of sprite
语法:
the backColor of sprite whichSprite
设定分镜(sprite)的背景颜色。在设定之前必须将这个分镜设定为Puppet。这个指令
主要是用在使用工具视窗所绘制的向量图形上,其它的图形也是可以适用的,但必须
特别注意使用之后的变化,在使用这个指令之后,必须使用updateStage指令更新舞台
上的所有图形,这样才会得到新的画面。

BACKSPACE
语法:
BACKSPACE
本指令代表键盘上的backspace键。

beep
语法:
beep[numberOfTimes]
使用电脑内部的喇叭发出哗一声,后面所加的数字,表示发声的次数。

beepOn
语法:
the beepOn
当画面上某些特定的分镜(sprite)启动后(启动表示将它指定为puppetSrpite),若使用
了画面上的图形,而这些图形并不是启动的分镜时,就会哗一声,但是记住要将
the beepOn设定为真。

put...before
语法:
put expression before chunkExpression
要将expression中所指定的值,放在chunkExpression中所指定的位置之前。这个
chunkExpression可能是一个字串,也可能是一个文本卡司成员,但也可能是一个数值,
不过put...before是可以将两个指定的字串加在一起的,例如:
put "This is book." into thisBook
put "a" before word 3 of thisBook
结果变成了"This is a book."。

birth
语法:
birth (script parentScriptName, value1, value2, ...)
产生子对象的指令。例如,在父程序Bird中的指令如下:
on birth me
return me
end
on fly me
put "I am flying"
end
则子对象的产生方式为:
set myBird to birth (script "Bird")
如此一来,子对象便可以使用父程序中handler,所以可以写成如下列的指令:
fly myBird

blend of sprite
语法:
the blend of sprite
利用这个指令可以设定分镜融合的程度,数值可以是从0到100之间的数。

bottom of sprite
语法:
the bottom of sprite whichSprite
查询分镜中的图形最低点到视窗上方边界的距离,本指令仅提供查询之用,是不能
够设定的。

buttonStyle
语法:
the buttonStyle
按钮的类型在此可分为两种,一种是将它设定为0,另一种是将它设定为1。0表示当
画面上有许多的按钮,而且都非常靠近时,若用户按了某一个按钮,在还没有放开鼠
标键的时候,拖动过其它的按钮时,其它的按钮也会显示被按到的情形。但当用户滑到
某一个按钮放开鼠标键后,这个按钮的指令就会被启动。设定为1则表示,虽然用户按
住鼠标键移动到其它的按钮,但是其它的按钮却没有任何反应。

cast
语法:
the property of cast whichCastmember
凡是在cast之后的字串或数字,都代表着某一个卡司成员,所以whichCastmember可以
是名称,也可以是数字。而property可以是这个卡司成员的属性,如背景颜色、前景颜色
、名称、代号、调色板、位置、大小等等。

cast backColor
语法:
set the backColor of cast castName to colorNumber
设定文本卡司成员的背景颜色。
范例:
设定第一个卡司成员的背景颜色为调色板上的第10个颜色,如下列所示:
set the backColor of cast 1 to 10

cast castType
语法:
the castType of cast cast member
这个指令可以指出卡司成员的类型。类型就是它的内容为图片、声音、影片、动画等
等。这些类型当然有方法可以区别,在指令结束后返回的是一些符号的设定,这些符号
就代表了各种类型,请参考表2。
符号 说明 符号 说明
#bimap 点矩阵图形 #palette 调色板
#button 按钮 #picture 图片
#digitalVideo 数字影片 #script Lingo程序
#empty 空的卡司成员 #shape 向量图形
#filmLoop 循环影片 #sound 声音
#movie 电影 #soundLevel properties 声音的大小
范例:
将第一个卡司成员的类型放置到变量TypeSymbol之中:
put the castType of cast 1 into TypeSymbol

cast depth
语法:
the depth of cast cast member
找出卡司成员的颜色深度,1-bit表示黑白两种颜色,2-bit表示四种颜色,4-bit表示16
种颜色,8-bit表示256种颜色。

cast fileName
语法:
the fileName of cast cast member
当使用到链接的卡司成员时,这个指令可以找到这个卡司成员所使用的文件名称,
其中也包含它的路径。

cast forecolor
语法:
set the foreColor of cast castName to colorNumber
与背景颜色相类似的地方,是设定一个文本卡司成员的前景颜色。

cast height
语法:
the height of cast whichCastmember
找出卡司成员的高度,但是只能够找出它的高度,而并不能使用这个指令来设定新
的高度。

cast hilite
语法:
hilite chunkExpression
将某一个特定的卡司成员或是卡司成员之中的部分内容反白。
范例:
将编号为1的文本卡司成员的第一个字反白:
hilite word 1 of field 1

cast loaded
语法:
the loaded of cast whichCastMember
测试此卡司成员是否已被装入到存储器中,若是则返回的值为真,若不是则返回的
值为假,但这个指令只适用于测试而不能够设定。

cast name
语法:
the name of cast WhichCastmember
设定卡司成员的名称。

cast number
语法:
the number of cast whichCastmember
设定卡司成员的编号。

cast palette
语法:
the palette of cast whichCastMember
查询卡司成员使用的调色板,若返回的值为正数,是自定的调色板;若为负数,则
是系统内定的调色板。

cast picture
语法:
the picture of cast whichCastmember
设定点矩阵图形的内容,只适用于点矩阵图形或是PICT的图形。

cast purgePriority of cast
语法:
the purgePriority of cast whichCastMember
设定卡司成员从存储器中移出的优先顺序,请参考表3:
号码 功能 说明
0 Never purge 不移出存储器
1 Purge last 最后一个移出存储器
2 Purge next 下一个移出存储器
3 Purge normal 依正常选择方式移出存储器
这个指令与存储器的管理有相当大的关系,善用这些管理的方式可以帮助您在显示
内容时更加顺畅。

cast rect
语法:
rect (left, top, right, bottom )
rect (point1, point2)
定义卡司成员的位置,使用的语法有两种。
范例:
第一种用法是利用四个数值来定义卡司成员距离视窗边界的位置,left与right表示
图形的左方和右方与视窗左方边界的距离,而top与bottom表示图形的上方和下方与
视窗上方边界的距离。下面范例的意思是表示将第二个卡司成员所在的位置放置在
变量newRec之中:
put the rect of cast 2 into newRec
第二种用法是利用两个点(Point)来表示位置,这个点的设计请参考Point的设计方式。
如果有一个变量firstPoint存放的值为(100, 200),另外一个变量secondPoint存放的值为
(300, 500),则它的用法可为:
put rect (firstPoint, secondPoint)
表示将这个矩形的区域显示出来。

cast regPoint
语法:
the regPoint of cast whichCastMember
显示或设定卡司成员的对齐点位置。显示出来的内容是一对水平与垂直的数值,也
可视为是一个点(水平位置、垂直位置)。这个指令不只可以查询出它的对齐点位置,也
可以设定新的位置,如下列所示:
set the regPoint of cast 2 = point(300, 400)
将第二个卡司成员的对齐点位置设定在点(300, 400)。

cast scriptText
语法:
the scriptText of cast whichCastMember
指定卡司成员的Scirpt。应用的方式是可以将某一个成员的Script指定为另一个成员
的Script。
范例:
将第二个成员的Script 设定成与第一个成员相同:
set the scriptText of cast2 = the scriptText of cast 1

cast text
语法:
the text of cast whichCastMember
指定文本卡司成员中的文字。可以将一个字串存放在变量中,然后以这个指令的方
式放置在卡司成员之中,当然也可以使用查询的方式将它的文字找出来。

cast width
语法:
the width of cast whichCastMember
查询卡司成员的宽度。

castNum of sprite
语法:
the castNum of sprite whichSprite
查询某一个分镜所使用到的卡司成员编号。

castType of cast
语法:
the castType of cast cast member
查询卡司成员的类型,类型是以符号方式显示的,各符号的意义如表4所示。
表4
符号 说明
#bitmap 点矩阵图形
#button 按钮
#digitalVideo 数字影片
#empty 空的卡司成员
#filmLoop 循环影片
#movie 电影
#palette 调色板
#picture 图片
#script Lingo程序
#shape 向量图形
#sound 声音
#soundLevel properties 声音的大小

center of cast
语法:
the center of cast castName
这个指令必须配合the crop of cast 使用,当the crop of cast 为真时,而又将the center
of cast 设定为真时,假如影片是大于分镜的矩形,则会截掉周围大于分镜的部分,这
会使影片看起来比较好一些。

centerStage
语法:
the centerStage
查询或设定舞台的位置,若the centerStage值为真,则舞台将显示在画面的中央,若
the centerStage值为假,则舞台将不会显示在画面的中央部分。

char...of
语法:
char whichCharacter of chunkExpression
char firstCharacter to lastCharacter of chunkExpression
找出字串中的某一个字符,或是某部分字串,例如:
put char 3 of "This is a book." into newChar
结果newChar的值为"is is"。

chars
语法:
chars (stringExpression, firstCharacter, lastCharacter)
从文字中找出子字串,子字串的起点处为firstCharacter,终止处为lastCharacter。例
如:
put chars ("This is a book.", 6, 7) into newChar
结果newChar的值为"is"。

charToNum
语法:
charToNum (stringExpression)
找出某一个字符的ASCII code值为何,也就是将一个字符转为数值类型。请参考图5。

图5 CharToNum 的使用

checkBoxAccess
语法:
the checkBoxAccess
在工具视窗中的两种按钮(checkbox、radio button)的设定样式,主要是控制用户是否
可以改变按钮的类型,它的设定方式有三种,如表5所示:
数值 说明
0 让用户按了后可以开关按钮
1 让用户按了后只可以开,但不能关
2 让用户按了后不可以开关按钮

checkBoxType
语法:
the checkBox Type
当用户可以改变按钮(checkbox、radio button)的型态后,这个指令可以为它设计一个
形状,请参考表6。
数值 说明
0 加上一个X符号
1 加上一个黑色边的方块图形
2 加上一个填满黑色的方块图形

checkMark of menuItem
语法:
the checkMark of menuItem whichItem of menu whichMenu
当程序中含有自定的菜单时,可以为它设计是否有符号出现在子菜单中。例如使用
到这个指令时,可以在它前面加上一个打勾的符号。
当设定为真时,表示会显示所选取的符号;设定为假时,则不会有任何的符号。

clearGlobals
语法:
clearGlobals
将所有的global变量设定为初始值,也就是0。

clickLoc
语法:
the clickLoc
这个指令会显示出上一次用户按鼠标键所在的屏幕位置,显示的位置会以Point指令
的方式显示出来,如果用户所按的位置为(200,200),则显示的结果为:
Point(200, 200)
请参考图6:

图6 clickLoc 的使用

clickOn
语法:
the clickOn
当某些特定的Sprites设定为真时,the clickOn的值为用户所按的Sprite,是一个数值,
可以利用这个数值来判断用户所按的是哪一个图形。

close window
语法:
close window windowIdentifier
将某一个视窗关闭,关于视窗的打开请参考window的指令。

closeXlib
语法:
closeXlib [whichFile]
关闭某一个Xliberary。事实上在window中,它的意思是表示关闭一个.dll的文件。
例如:
closeXlib
表示关闭所有的Xlibrary。
closeXlib"Sample"
这表示关闭当前目录下的sample.dll文件,当然它有一个特定的路径,所以可以加
上路径的名称。

colorDepth
语法:
the colorDepth
查询当前计算机上所设定的颜色深度,如表7所示。
表7
数值 说明 数值 说明
1 黑白 8 256色
2 4种颜色 16 32,768色
4 16色 32 16,777,216色
图7是利用message视窗所查询出来的结果。

图7 查询当前计算机所设定的颜色深度

constrainH
语法:
constrainH(whichSprite, integerExpression)
查询一个数值,看它是否落在某一个分镜图形的左右边以内的位置上。若此数值
在这图形的左右边以内的位置,结果值为此数值;若是小于图形左边的位置,则结
果值为图形左边的值;若是大于图形右边的位置,则结果值为图形右边的值。
例如分镜一的图形左右边的位置为100与200,则:
put constrainH (1, 90) into newPosition
结果newPosition值为100。
put constrainH (1, 150) into newPosition
结果newPosition值为150。
put constrainH (1, 250) into newPosition
结果newPosition值为200。

constraint of sprite
语法:
the constraint of sprite whichSprite
设定某一个分镜可以移动的范围。当使用constarint的设定之后,此分镜将只会在所
定的区域中移动,而无法移动到所定的区域之外,要取消区域的设定只要将它设定为
0即可。

constrainV
语法:
constrainV(whichSprite, integerExpression)
与constrainH的用法类似,用其可以查询一个数值,看看是否落在某一个分镜图形的
上下边之内的位置。若此数值在图形的上下边位置之内,结果值即为此数值;若小于
图形上边的位置,则结果值为图形上边的值;若大于图形下边的位置,则结果值为图
形下边的值。

contains
语法:
stringExpression1 contains stringExpression2
测试Expression1是否含Expression2。若是含有的话,则返回的结果值为真;若是没
有含有的话,则返回的结果值为假。

continue
语法:
continue
将设有pause的暂停动作结束,而继续电影的播映。

controlDown
语法:
the controlDown
测试control键是否被按下。若被按下时the controlDown 的值为真;若未被按下时the
controlDown的值为假。

controller of cast
语法:
the controller of cast castName
针对QuickTime for Windows 的影片文件而言,这个指令可以将它的控制按钮显示或
隐藏。若设定值为0,表示隐藏控制按钮;若设定值为1,表示显示控制按钮。

copyToClipBoard
语法:
copyToClipBoard cast castMember
将某一个卡司成员的内容复制到剪贴板上。

cos
语法:
cos (angle)
求取某一个角度的cos值。

count
语法:
count (list)
计算阵列中有几个项目。

crop of cast
语法:
the crop of cast
这个指令可以让数字影片显示在分镜的矩形之中,分镜的矩形设定请参考rec指令。当
the crop of cast设定为假时,它会将数字影片挤压或放大显示在分镜的矩形之中;但若是
the crop of cast设定为真时,数字影片若大于分镜的矩形,则会将部分画面截掉而不显
示。

cursor
语法:
cursor [castNumber]
cursor [castNumber, maskCastNumber]
cursor whichCursor
设定光标的形状,如果在cursor 之后直接加上数字的话,各个数字的意义如表8所示。
表8
数值 意义 数值 意义
0 不设定光标 3 十字条状式的光标
-1 箭头式光标 4 漏斗形光标
1 I字符号光标 200 光标消失
2 十字形光标
如果在Windows的环境下,想使用其它的光标形状,可以设计一个16*16大小的卡司成
员,然后将它在卡司视窗中的编号放置在中括弧之中,如果这个卡司成员是在第一个位
置上,则为:
cursor [1]
这时光标是透明。如果想使用不透明的光标,就请将原来的卡司成员复制成另外一个,
将所有空白填满,然后在中括弧中再加入一个参数。如果这个卡司成员是在第二个位置
上,则指令为:
cursor [1, 2]
记得要将这两个卡司成员都转换为1bit,16*16的大小,这样才不会出错。

cursor of sprite
语法:
the cursor of sprite whichSprite to [castNumber]
the cursor of sprite whichSprite to [castNumber, maskCastNumber]
the cursor of sprite whichSprite to whichCursor
只使用cursor指令,是表示光标在任何位置上时都会出现这个新的光标。但是如果使
用这个指令,则当光标在画面上指定的Sprite时,才会出现新的光标。其它的方法都与
cursor相同。