南瓜408在上个帖子中说
引用:
我的机子的系统是繁体版的,所以你们的东西一打开就是乱码,能不能直接发上来啊
拜托!!!!!!!!!!!!!!
哦,可是这个LINGO文档很长的。
---------------------------------------
LINGO语言学习
※lingo语言中不分大小写,大写的目的是增加语言的可读性!
-------------------------------------------
Lingo语言是一种高级编程语言,对于曾经学习过计算机编程语言的用户来说,它并不是一种非常难于理解的编程语言;而对于非计算机类学科,特别是从来没有过编程经历的用户,它不失为一种非常良好的启蒙编程方法。原因是Lingo语言在编程语法上非常接近普通英语语法,可以轻松的从字面看出命令的用途。
曾经有不少用户在看到Lingo语言的八百多个常用词组时就打消了学习的积极性,因为从零开始,到真正掌握这些编程语言的确不是一件容易的事。
但是如果你决心学,那就不用把这些问题当作“拦路虎”,因为有很多现在正在从事多媒体行业的高级人才都是和你一样,从一点编程语言基础都没有,直到一步一步变成了高手。
这个过程的长短因人而异,和你的努力程度和理解能力有直接的关系。千万不要因为觉得自己恐怕会不理解而回避。只要你告诉自己,这些内容必须理解,相信在不久之后你就肯定理解了。就是这么简单。
在分析了很多的教学案例之后,我总结出了一些学起来既简单,又容易出效果的基本规律,相信你在看完之后一定会对用Lingo语言制作多媒体节目充满信心的。
在Director编程过程中,语言一般称为教本。
在多媒体节目制作过程中,最主要的要涉及三种功能的编程:
1. 控制播放头的跳转
2. 替换演员(主要用于制作按钮效果)
3. 打开、关闭通道
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
命令
※[]中的词语可以省略
-------------------------------------------
1.Go 命令
A语法:Go [to] [frame] whichFrame
用途:此命令将使播放头条转到指定的帧上继续播放.
例:Go to frame 20 ------------跳转到第20帧
B语法:Go [to] movie whichMovie
用途:此命令使播放头跳转到指定的电影上继续播放,如果不写明帧号则进入第一帧.
例:Go to movie "A.dir" ------------跳转到电影"A.dir"的第一帧上继续播放
※电影名称后面需要加上相应的文件格式后缀
C语法:Go [to] [frame] whichFrame of Movie whichMovie
用途:此命令使播放头跳转到指定电影的指定帧上继续播放.
例:Go to frame 10 of movie "A.dir"
D语法:Go [to] Marker
用途:此命令使播放头跳转到指定的Marker标记处.
例:Go to "FirstMarker" ------------播放头跳转到标有"FirstMarker"的帧继续播放
E语法:Go loop
用途:此命令使播放头在当前帧与前面最靠近的标记符之间循环播放.
例:当前播放头在20帧,在前面第10帧有一标记,在使用Go loop命令时,播放头将在10帧和20帧之间循环播放.
F语法:Go next
用途:此命令使播放头跳转到下一标记处继续播放.
G语法:Go Previous
用途:此命令使播放头跳转到上一个标记处继续播放.
-------------------------------------------
2.Nothing 命令
语法:nothing
用途:此命令使系统不作任何操作.
例:repeat while the mousedown ------------当鼠标按住时
nothing ------------系统不作任何操作
end repeat ------------结束循环
-------------------------------------------
3.Quit 命令
语法:Quit
用途:此命令将关闭当前执行的电影文件,如果处于Director编辑状态,则该命令将关闭Director并返回操作系统.
例:If the controlDown then ------------当用户按下Ctrl键时执行
quit
end
-------------------------------------------
4.Sound Fadein 命令
语法:Sound Fadein WhichChannel
Sound Fadein WhichChannel,ticks
用途:此命令将在指定的声音通道上将声音淡入或在指定的时间内淡入.
例:将声音通道2上的声音在5秒内淡入.
Sound Fadein 2,5*60
※在score视窗中共有两个声音通道,所以我们在此处确定的通道只能是声音通道1或2.Ticks用于确定淡入时间,1 Ticks等于1/60秒,所以5秒淡入应写为5*60.如果只写5,则实际时间为1/12秒.
-------------------------------------------
5.Sound Fadeout命令
语法:Sound Fadeout whichChannel
Sound Fadeout whichChannel,ticke
用途:此命令将在指定的声音通道上将声音淡出或在指定的时间内淡出.
例:将声音通道2上的声音在5秒钟内淡出
Sound Fadeout 2,5*60
-------------------------------------------
6.Sound Close 命令
语法:Sound close whichChannel
用途:此命令将把指定声音通道上正在播放的声音文件关闭,如果该声音通道上没有声音文件播放,则此命令不作任何事情.
例:将声音通道4上的声音关闭
Sound close 4
※在Director中,共有8条声音通道,在score视窗中共有两个可以看到的声音通道,其余6条可以使用lingo语言控制.
-------------------------------------------
7.Sound Playfile 命令
语法:Sound Playfile whichChannel,whichsoundfile
用途:此命令用于在指定的声音通道上播放指定路径的外部声音文件.(从磁盘,光盘,硬盘上直接播放,使用于较大的声音文件)
例:Sound Playfile 2,the pathname & "back.wav" ------------在声音通道2上播放于本文件相同路径目录下的back.wav文件;其中 the pathname用于取得当前文件路径,&用于实现字符串合成;the pathname & "back.wav"最后传回的为文件完整的路径字符串.
-------------------------------------------
8.PuppetSprite 命令
语法
uppetSprite whichChannel,True or False
用途:此命令用于确定哪个通道可以被lingo命令控制.
◆当设定为TRUE,lingo命令将控制指定的通道.
◆当设定为FALSE,指定的通道将不再受lingo命令将控制.
例
uppetSprite 120,true ------------120通道被lingo控制
PuppetSprite 120,false ------------解除
-------------------------------------------
9.CastNum of sprite 命令
语法:Set the castNum of sprite whichSprite to the number of castNum
用途:用指定的卡司演员替换指定通道上的脚色.
例:※一般可用简略写法:Set the Membernum of sprite 5 to "B" ------------其中5为通道,"B"为演员名
Set the membernum of sprite 2 to 7 ------------其中2为通道,7为演员在卡司表中排号
-------------------------------------------
10.Updatestage 命令
语法:updatestage
用途:当电影在当前帧上发生变化时,则需刷新屏幕;若非发生在同一帧上,则director会自动刷新.
-------------------------------------------
11.Sound Stop 命令
语法:Sound stop Soundchannel
用途:用来停止指定通道上正在播放的声音,但声音通道并不关闭.
例:sound stop 3 ------------关闭声音通道3上的声音
-------------------------------------------
12.PuppetSound 命令
用途:从内存中回放音乐,允许同时进行其他的磁盘操作,如将电影成员从磁盘载入内存.适用于较小的声音文件.
语法
uppetSound whichCastMember
PuppetSound whichChannel,whichCastMember
例
uppetsound 8,12 ------------用第8个声音通道播放在卡司表中排号为12的声音文件
Puppetsound 6,"qq.wav" ------------用第6个声音通道播放在卡司表中名称为"qq.wav"的声音文件
-------------------------------------------
13.Tell 命令
用途:实现stage与MIAW的对话以及互相控制操作.
语法:Tell MIAW to
Tell the stage to
例:tell "2" to go to 15
-------------------------------------------
14.Visible 命令
用途:用来打开或关闭编排脚本上的某一通道。
语法:Set the visible of sprite whichchannel to TRUE or FALSE
例:set the visible of sprite 2 to false
set the visible of sprite 3 to true
-------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Director实例
1.播放*.avi格式的视频的方法:
On exitframe
set totalAvi=the duration of member "movie.avi" ------------"movie.avi"为导入的视频文件名称
set pos=the movieTime of sprite 1 ------------1为视频演员在卡司表中位置
if pos>=totalAvi then
play movie "2.dir" ------------此语句为视频文件播放完毕后将要进行的操作
end if
go the frame
end
应用:将影视文件导入,放置于第一通道第一帧,并将长度设置为1帧,在第一帧帧语言中写入以上语句.
-------------------------------------------
2.获得随机数,并实现操作:
A获得0-9之间的随机数:set myNum=random(10-1)
B获得500-599之间的随机数:set myNum= random(99)+500
C要获得1-6之间的随机数,并作相应操作:
set mynum=random(6)
if mynum=1 then
go to "1"
else if mynum=2 then
go to "2"
else if mynum=3 then
go to "3"
......
-------------------------------------------
3.制作一个点击时有声音的按钮的实例:
On mousedown
Puppetsprite 1,true ------------控制按钮所在的通道,为后面作按钮切换作铺垫
If soundbusy (1) then ------------判断声音通道1是否正使用,如果是
sound close 1 ------------则关闭声音通道1,(一般为配音)
else ------------如果不是
nothing ------------不作任何操作
end if
If soundbusy (2) then
sound close 2 ------------关闭声音通道2,(一般为背景音乐)
else
nothing
end if
Sound playfile 2, the pathname&"click.wav" ------------在声音通道2中播放按钮响声
Repeat while soundbusy (2) ------------如果鸣响没有完,则在此循环
nothing ------------但不作任何操作
end repeat ------------直到鸣响声音播放完
Repeat while mousedown ------------判断鼠标是否依然按下,如果是
set the castnum of sprite 1 to the castnum of "Ao" ------------则将凸起的按钮切换成凹陷的按钮
updatestage ------------刷新屏幕
end repeat ------------如果鼠标被释放,则跳处循环
set the castnum of sprite 1 to the castnum of "To" ------------将按钮换成为突起状态
updatestage ------------刷新屏幕
Puppet 1,false ------------停止对通道1的控制
go to frame 100 ------------跳转到100帧
end
此语言应放于演员上
-------------------------------------------
4.调用外部应用程序:
on mouseup
open "windows" withmydrive "路径及文件名"
end
此语言应用于需要打开其他类型的程序,如一些.exe文件等,命令发出后,将会打开调用的程序,但源程序不关闭.
-------------------------------------------
5.实现调用外部声音文件,并使声音文件循环(制作背景音乐).
第一步,首先在电影脚本上打开一个声音文件:
On startmovie
sound playfile 2,the pathname & "back.wav"
end startmovie
第二步,在电影每一帧的脚本中检测该声音是否还在播放,如果正在播放,那么继续播放;如果声音已经播放完,重新开始播放此音乐.
On enterframe
if soundbusy (2) then
nothing
else
sound playfile 2, the pathname & "back.wav"
end if
end
-------------------------------------------
6.创建MIAW窗口
创建MIAW窗口是在一个stage舞台上打开一个或多个窗口,然后在其间进行交互操作.
例:首先制作好两个电影,选择其中一个为stage(主节目),另一个为MIAW,分别命名为"1.dir"和"2.dir".
在1中制作一个热区,并赋予语言:
On mouseup
open window "2.dir"
end
-------------------------------------------
7.创建关于MIAW窗口的脚本
在MIAW的电影脚本中写入:
On openWindow
statement(s) ------------陈述,叙述,命令
end
例:可以在MIAW打开时设定其样式:
On openwindow
set the windowtype of window "2.dir" to 8 ------------设定MIAW窗口的样式参数为8
end
※关于MIAW窗口类型参数如下(针对PC系统):
0 -----可移动的,可以改变大小的窗口,但无缩放按钮
1 -----警告对话框或者其他的状态对话框
2 -----普通方框,没有标题栏
3 -----有阴影的方框,没有标题栏
4 -----可移动的窗口,没有缩放按钮
5 -----可移动的模态对话框(不带关闭按钮)
8 -----标准文档窗口
12 -----可以缩放的窗口,但不可以改变尺寸的窗口
16 -----圆角窗口
49 -----浮动的小窗口
如果需要制作不规则外形的MIAW窗口,需先制作一张1bit的位图,置入制作成MIAW的文件内,调用其成为遮罩.
例:set the windowtype of window "2" to member ("mark"
-------------------------------------------
8.stage舞台和MIAW窗口的互相控制
stage舞台对MIAW的控制
例
n mouseup
tell window "2" to go to 15
end
MIAW对stage舞台的控制
例
n mouseup
tell the stage to go to 15
end
-------------------------------------------
9.改变光标外观
例
n mouseenter
Cursor 2
end
※关于光标外观参数如下(针对PC系统):
0 -----无光标
-1 -----普通箭头光标
1 -----I型的光标
2 -----交叉十字光标
3 -----交叉十字棒光标
4 -----沙漏光标
200 -----空白
254 -----帮助光标
256 -----铅笔
257 -----橡皮擦
258 -----选择
259 -----颜料杯
260 -----一只小手
272 -----套索
280 -----手指光标
281 -----吸管
284 -----纵向尺寸
285 -----横向尺寸
286 -----对角线尺寸
290 -----拳头
291 -----"禁止放下"手
292 -----"拷贝"拳头
293 -----带白边的黑色箭头
301 -----气刷
302 -----放大镜
303 -----缩小镜
-------------------------------------------
10.调整系统分辨率
on startMovie ------------当电影开始
global oldRes ------------把系统分辨率设置为变量
set oldRes = changeRes([640,480]) ------------设置系统分辨率为640×480
end
on stopMovie ------------当电影结束
global oldRes ------------把系统分辨率设置为变量
changeRes(oldRes) ------------让系统分辨率恢复以前的设置
end
如果是按钮激发动作,则
on mouseUp
changeRes([640,480]) ------------设置系统分辨率为640×480
end
-------------------------------------------
11.制作可以控制*.avi格式的视频播放及播放速度的按钮
-------------------------------------------
12.控制Flash播放
on exitFrame
if sprite(Flash所在通道).playing then ------------判断Flash所在通道是否正在播放,如果是
go the frame ------------则返回当前帧继续播放
else ------------如果不是
sprite(spriteNum).rewind() ------------进行其他动作
updateStage
end if
end
应用:将Flash文件导入,放置于某通道某帧,并将长度设置为1帧,在当前帧帧语言中写入以上语句.
控制flash在Director中播放,并播放完自动执行操作的命令:
有三种方法可以做到这一点:
一、在flash里用geturl:lingo:go to frame xx 或 geturl:lingo:go to marker xx, 控制你的跳转,在director当前帧加个“go the frame”的命令让当前帧停止。
二、在 director里控制,判断是否在播放
on exitFrame me
if sprite(1).playing then ----sprite(1)为你放flash的通道,
go the frame
else
if the mouseDown then go the frame+1
go the frame+1
end if
end
三判断flash的总帧数
on exitFrame
if sprite(1).frame < sprite(1).member.frameCount then
go to the frame
else
go to the frame+1
end if
end
-------------------------------------------
13.控制Director电影节目背景颜色
set the bgColor of the stage = rgb(255, 153, 0) ------------其中值分别为R\G\B值
-------------------------------------------
14.控制Flash的播放速度达到最优化
property spriteNum
on beginSprite me
if sprite(spriteNum).member.frameRate < 15 then ------------括号内为Flash所在通道
sprite(spriteNum).playBackMode = #fixed
sprite(spriteNum).fixedRate = 15
end if
end
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
函数
1.Date函数
语法:the abbr date
the abbrer date
the abbreviated date
the date
the long date
the short date
用途:以上函数都将返回当前系统日期,格式稍有不同.
例:
put the abbreviated date
--"1998年9月9日"
put the short date
--"98-9-9"
-------------------------------------------
2.Time函数
所有语法和用途均与Date函数一至,返回系统时间.
-------------------------------------------
3.Frame函数
语法:the frame
用途:此函数将返回播放头所在的电影帧数.
例:测试当前播放头所在帧数
put the frame
--26 ------------表示播放头当前位于第26帧
将播放头由当前帧跳转之前一帧上:
go to (the frame-1)
-------------------------------------------
4.framelabel函数
语法:the Framelabel
用途:此函数将返回当前镇上的标记符名称,若当前帧上没有标记符,Framelabel函数返回得值为一个空字符串.利用此函数可以在当前帧上创建一个标记符.
例:取得当前标记符名称:
put the framelabel
--"First" ------------表示当前标记符名成为First
在当前帧上创建标记符:
set the framelabel to "Second"
-------------------------------------------
5.Random函数
语法:Random(integerExpression)
用途:此函数将随机产生一个数值,该数值不会超过由integerExpression表达式设定的数字范围.
例:产生10以内的随机数。
put random(10)
--4
put random(10)
--6
put random(10)
--1
-------------------------------------------
6.Rollover函数
语法:rollover(whichsprite)
用途:此函数用于判断鼠标是否在某个通道的角色上面,如果是则返回为真,否则返回为假。
例:判断鼠标是否在通道3的角色身上,如果是则跳转到标记为"Marker3"处,如果不是则跳转到标记"Star"处:
If rollover(3) then
go to "Marker3"
else
go to "Star"
end if
(一般在多媒体软件中,当我们编写程序时常用到这个函数。我们可以把不同的选择项目排放在不同的通道上,然后判断鼠标位于哪个通道的角色上,根据传回的数值做相应的动作,包括改变鼠标形状,跳转到相应的标记处等。)
-------------------------------------------
7.SoundBusy函数
语法:SoundBusy (whichchannel)
用途:此函数用于判断声音通道是否正在被使用,如果是,则返回为真;否则返回为假,并根据返回的值做相应的操作。
例:控制背景音乐播放,首先用该函数判断背景音乐所在的声音通道是否正在使用,如果是关闭声音通道:
If soundbusy (1)=ture then
sound close 1
end if
-------------------------------------------
8.Mousedown函数
语法:The mousedown
用途:用于判断鼠标是否被按下,如果正在被按住,则返回为真,否则为假。
例:
On mousedown
Repeat while mousedown ------------判断鼠标是否依然按下,如果是
set the castnum of sprite 1 to the castnum of "AO" ------------则将突起的按钮切换成凹陷按钮
updatestage ------------刷新屏幕
end repeat ------------如果鼠标被释放,则跳出循环
end
-------------------------------------------
9.RightMouseDown函数
语法:The rightmousedown
用途:用于判断鼠标右键是否被按下,如果正在被按住,则返回为真,否则为假。
-------------------------------------------
10.Mouseup函数
语法:The mouseup
用途:用于判断用户是否释放鼠标键.
-------------------------------------------
11.RightMouseup函数
语法:The rightmouseup
用途:用于判断用户是否释放鼠标右键.
-------------------------------------------
12.mouseenter函数
语法
n mouseenter
用途:用于判断光标是否进入某个脚色所在区域.
-------------------------------------------
13.mouseleave函数
语法
n mouseleave
用途:用于判断光标是否离开某个脚色所在区域.
-------------------------------------------
14.mousewithin函数
语法
n mousewithin
用途:只要光标在脚色上,就连续发送该消息,即每帧发送一次.
-------------------------------------------
15.mouseupoutside函数
语法
n mouseupoutside
用途:当用户在某个脚色上按下鼠标,却又再把光标移出该脚色后才释放鼠标键时所发送的消息.
-------------------------------------------
16.beginSprite函数
语法
n beginSprite
用途:当播放头再剪辑室首次遇到某一个脚色时发出一次.
-------------------------------------------
××××××××××××××××××××××
DIRECTOR的一些基本应用法
1.在Director中导入网页
一、使用activex
在Director中执行Insert>Control>ActiveX…命令,选择Microsoft Web浏览器控件。
然后用navigate(sprite 1, homepageURL)来调用web页
sprite 1指将导入的Activex控件所在的通道
homepageURL指html文件的路径
二、使用WebXtra
-------------------------------------------
2.如何确定DR程序打包所需的Xtra
做一个dir包含所有用过的媒体形式,生成project,运行,就可在winxx的临时文件夹中找到一个文件夹包含所有需要的xtras
编辑这个dir时点modify--->movie---->xtras就是所有需要的xtras的列表
-------------------------------------------
3.非常大的mpg文件, 考虑到调用速度,想借用windows的media player外部播放
mp=media player
open mppath&mpexename&&mpgpath&mpgname
例
open "C:\Program Files\Windows Media Player\mplayer2.exe"&&"d:\演示光盘\非常大的mpg.mpg"
or
open "C:\Program Files\Windows Media Player\mplayer2.exe"&&the moviepath&"非常大的mpg.mpg"
-------------------------------------------
4.如何使发布程序小一些
在编辑的时候所有角色都放在内部,然后打包成*.dcr格式的,大概能压缩90%.
在modify--movie--xtras中去掉不需要的xtras
声音文件最好用swa,在dt中可以转换。
-------------------------------------------
5.如何使鼠标以动画的形式出现
Dr中是可以用动画鼠标的,实现步骤是:
1、准备好鼠标动画的五帧图(256色)
2、导入cast表中,
3、菜单:Insert/media Element/Cursor...
4、在对话框中,从左边的cast members中选择你想要的五帧图加入到右边中。
5、再设定一些参数,比如大小,动画速度。热点等。
6、用 cursor = member(cursorName) 来指定光标即可,
你也可以用lingo的方法来建立光标。
-------------------------------------------
6.转场如何应用在精灵上
puppetTransition member whichCastMember
puppetTransition whichTransition {,time} {, chunkSize} {, changeArea}
01
Wipe right
27
Random rows
02
Wipe left
28
Random columns
03
Wipe down
29
Cover down
04
Wipe up
30
Cover down, left
05
Center out, horizontal
31
Cover down, right
06
Edges in, horizontal
32
Cover left
07
Center out, vertical
33
Cover right
08
Edges in, vertical
34
Cover up
09
Center out, square
35
Cover up, left
10
Edges in, square
36
Cover up, right
11
Push left
37
Venetian blinds
12
Push right
38
Checkerboard
13
Push down
39
Strips on bottom, build left
14
Push up
40
Strips on bottom, build right
15
Reveal up
41
Strips on left, build down
16
Reveal up, right
42
Strips on left, build up
17
Reveal right
43
Strips on right, build down
18
Reveal down, right
44
Strips on right, build up
19
Reveal down
45
Strips on top, build left
20
Reveal down, left
46
Strips on top, build right
21
Reveal left
47
Zoom open
22
Reveal up, left
48
Zoom close
23
Dissolve, pixels fast*
49
Vertical blinds
24
Dissolve, boxy rectangles
50
Dissolve, bits fast*
25
Dissolve, boxy squares
51
Dissolve, pixels*
26
Dissolve, patterns
52
Dissolve, bits*
-------------------------------------------
7.如何控制Flash的快进和倒退
nowPos=sprite(x).Frame
后退:sprite(x).goToFrame(nowPos-1)
前进:sprite(x).goToFrame(nowPos+1)
x为Flash所在的通道号,改变后面的数字1即可快速前进或后退。
-------------------------------------------
8.在projector用lingo关闭计算机(用于Windows9X),主要用于触摸屏等
无人值守的情况等。
无论此时计算机是否有打开的程序或窗口,使用下面的lingo语句可直接
关机:(仅限于projector)
open "c:\windows\rundll.exe user.exe,exitwindows"
若要重新启动计算机,改为
"c:\windows\rundll.exe user.exe ,exitwindowsexec"
当然在实际的projector中不能直接用"c:\windows",而要用fileio的
getosdirectory()等函数先获得系统相应目录。
-------------------------------------------
9.使转场应用于制定的演员
先在转场通道上设定好转场,然后将语言写于按钮或帧脚本上均可。
puppetTransition 2, 4, 20, FALSE
updatestage
-------------------------------------------
10.使窗口最小化命令
appMinimize
不过还是建议用
(the stage).rect=rect(-10,-10,0,0)
(the stage).drawRect=rect(-10,-10,0,0)
这样还能用语句恢复当前状态
打开文件夹的LINGO控制
open the pathname&"文件夹名"with"c\winnt\Explorer.exe"
可打开同一目录的文件夹
-----------------------