lingo 语言基础.docx
- 文档编号:6809975
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:37
- 大小:241.71KB
lingo 语言基础.docx
《lingo 语言基础.docx》由会员分享,可在线阅读,更多相关《lingo 语言基础.docx(37页珍藏版)》请在冰豆网上搜索。
lingo语言基础
lingo语言基础
一、事件与命令
事件
在上次的教程中,我们已经初步试验了lingo的编写和运行.这次我们要对于lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。
还记得上次我们让电影停在某帧时候的脚本是如何的么?
onexitframe
gotheframe
end
这里面就包含了一个lingo的最基本的一点。
lingo是基于事件(event)的。
当某个事件发生的时候,才会执行下面的动作。
在上面这个脚本中gotheframe这句话是在onexitframe(退出改帧)的时候执行的onexitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。
同样,下面的一些都是lingo的也就是事件。
lingo魔法书--变量,字符串和文本域
日期:
2006年6月1日录入:
92study人气:
查看:
[大字体中字体小字体]双击自动滚屏
lingo魔法书--变量,字符串和文本域
变量
学过编程的同志都知道所有编程语言上来都先说变量.但是为了照顾大家的情绪,避免把这个教程显得太乏味.我们现在才来讨论变量.什么是变量?
变量好比一个房间,堆放你需要储存的东西.在实际编程中变量有着很重要的作用.同样我们也经常用变量来储存一些比较复杂的表达式.这样可以简化我们程序的编写.变量之所以叫做变量是因为它的值是可以变化的.下面我们先来看看变量的一些操作.
赋值,就是给变量以内容.可以这样写.
变量名=变量值或者表达式
例如:
a=1 a=3*5
变量的类型:
在lingo语言中不同于其他的一些高级语言,要声明变量的类型.lingo的变量类型是由赋予的内容决定的.我们最常用的是字符和数字两种值.
比如:
a=1变量a的类型是数值型.a="1"变量a的类型是字符型.注意这里虽然都是1.但是带上""的就是字符串.不带的就是数值.
首先我们看些字符串的操作
&表示字符串连接.执行put"ab"&"cd"得到的结果是"abcd"
&&表示字符串连接当中加上一个空格.执行put"ab"&&"cd"得到的结果是"abcd"
string(表达式)将数值转换成为字符串例如putstring(3*5)结果为"15"
putstring(5)结果为"5"
numtochar(整数表达式)将数值转换为字符串,这个数值为字符串的ascii值.putnumtochar(65)的结果是大写的"a".
相反的chartonum(字符串)就是把字符转换成为asc码
选取字符串的长度length(字符串).例如putlength("abcd")结果为4.
删除字符串中的字符
取子字符串chars(字符串表达式,第一个字符串,最后一个字符串)比如
putchars("macintosh",2,4)
--结果为"aci"从第2个取到第4个.
这是一个假冒伪劣的计算器.因为他更本不能计算.只能显示数字和擦除数字.在这里要给大家展示的是文本域的操作lingo.为了使得问题尽量的简单.我们来看一个按钮显示文本是如何做的.
首先在舞台上用工具栏上的field按钮在舞台上制作一个文本域.然后在属性面板里面填写上文本域的名字.我们这里取名"result".然后在舞台上画一个按钮.标题为1.整个时间轴这样安排.当然我们不能忘记适用帧脚本停住画面.sprite1是文本域sprite2是按钮.ok我们的基本动作好了.
下面我们要安按钮给文本域写数字.lingo语言是如何的呢?
文本域中的值可以这样来给定.
put变量或者表达式intofield"文本域名"
文本域名我们在例子中是"result".对于1这个按钮可以这样编写程序
onmouseup
put"1"intofield"result"
end
如果大家想一个个给按钮写put"x"intofield"result"的话那么我的教程是失败的.如果我有100个按钮的话一个个写过来不要写死?
我们要用上次说的behavior行为的概念.
按钮全部放到流程线上以后我们可以发现.如果我们仔细观察的话我们可以发现这样一个规律.那就是按钮数和sprite数正好相差1."1"按钮是sprite2."2"按钮是sprite3.我们是否可以用这个特点做文章呢?
onmouseupme
buttonvalue=string(thecurrentspritenum-1)
putbuttonvalueintofield"result"
end
下面就是我写的一个behavior,核心思想是取得当前sprite的编号,然后-1作为field的内容,关键的语句是thecurrentspritenum这个系统变量可以取得当前正在操作的sprite的号码,然后减1,再用string函数变换成为字符串赋值给buttonvalue变量.这样的话就可以实现按钮和值的统一.这里我们使用变量是为了让语句看起来更间洁不然我们写putstring(thecurrentspritenum-1)intofield"result"也可以,但是太长了可读性就差了.
接下来我们又发现一个问题,那就是我们新按按钮之后原先的值就消失了.正常的计算器显然不是这样的.如何办呢?
onmouseupme
content=thetextofmember"result" --取得当前文本域的值使用系统变量thetextofmember
buttonvalue=string(thecurrentspritenum-1)
putcontent&buttonvalueintofield"result"--让当前文本域的值加上当前相加的值
end
ok我们的behavior写好了.然后一个个赋给所有的按钮.我们还剩下最后一个back按钮没有制作.
onmouseupme
content=thetextoffield"result"
stringlength=length(content)-1
nowcontent=chars(content,1,stringlength) --这里我们取子串删除.取得除了最后一个字符以外的所有字符也就是删除最后一个字符.
putnowcontentintofield"result"--然后重新赋值给文本域.
end
ok劣质计算器就做好了.
如果你想要在运行状态下在文本域中输入文字.可以使用sprite(编号).editable=true来设定.当然首先要将该sprite木偶化.
onbeginspriteme
puppetsprite1,true--将sprite木偶化
sprite
(1).editable=true--将sprite可编辑.
end
ok我们到这里基本上到了入门教程的尾声,这里我们最后给大家一个技巧就是使用注释语句.很多时候我们在编写lingo语言的时候,需要对一些语句进行注释.这样的好处是以便于以后自己看一下编程序的思路.不至于若干天之后自己也看不懂.注释在lingo中是不会被执行的.它的开头用"--"表示.在director中用红色表示.大家可以发现我在整个教程中已经反复用到了注释语句.同样.注释语句的
还有一个好处就是调试程序的时候方便.有些语句我们暂时想禁止他看看会有什么效果.我们只要在前面加上"--"就可以让他暂时变成注释不起作用.下次需要的时候只要把"--"删除就可以了.在此要感谢arky给我做了精彩的演示,让我体会了它的强大.最后想告诉大家的是,与其多看理论不如动手实践.自己做和看别人做是完全不一样的.会有很多意想不到的事情发生.这些将是你宝贵的经验.
作者后记:
写到这里,我们的lingo语言基础教程暂时告一个段落了.在编写的过程中,读者热情的催促是我完成它的动力.本来写这个教程的初衷是因为看到了国外的一片lingo语言教程.觉得是我见过的少数lingo语言教程之一.当时想把他翻译过来给大家欣赏.但是在照搬改组了前2篇之后登时发现教程的内容偏少.于是在左思右想之后决定重新编写.于是把老外的教程压缩进入第2篇,从第3篇开始全部重写.搬出了4本lingo语言的书进行参照.由于工作繁忙加上要重起炉灶,所以教程进行特别缓慢.恳请大家谅解.上面的11篇还只是lingo魔法书的第一页.我们将在以后的日子继续见面的
lingo魔法书--光标和行为
日期:
2006年6月1日录入:
92study人气:
查看:
[大字体中字体小字体]双击自动滚屏
lingo魔法书--光标和行为
director中光标也可以自己定义和制作.我们看看下面的一个例子:
光标单击每个人脸就变成了一个动态的光标.移出按钮图片,光标就还原了.这样的效果如何做呢?
首先我们看一下光标控制语句.
cursor(角色名,遮罩名)--指定某个角色作为光标.角色必须是双色位图大小16x16。
cursor光标号--光标代号
关于光标代号flyingbird曾经给出了一张很好的图。
当我们把cursor设置为0的时候为取消设置还原成为莫认得箭头。
在本例中我们制作的时候就是使用了这条命令cursor0想下事件应该是什么呢?
对了,是onmouseleaveme鼠标移开的时候还原光标。
注意cursor200是将鼠标隐藏。
这个属性会在下面的例子中使用。
还可以这样写cursor(member"角色名称")。
指定一个角色作为光标。
我们在使用动画光标的时候就是制定了角色库中角色“woniu".实现的语句是
onmouseupme
cursor(member"woniu")
end
这里顺便扯一下动画光标的制作。
动画光标和彩色光标从director6.5才开始有的。
可以使用一系列的位图做成一个动画的光标。
位图大小必须小于32x32象素,大于这个尺寸会自动缩小到32x32。
颜色必须是256色。
制作的时候首先导入图片。
象上面我们导入了3个图片。
然后选择insert--〉mediaelement--〉cursor系统出来对话框。
在右侧选角色,然后按add添加到光标中,按preview可以预览。
automask系统会自动过滤白色。
interval为自动切换的时间。
制作完毕之后,角色库中会多一个角色。
下标是一个小的绿色光标。
这就是我们要的动画光标。
每个按钮的代码都是下面的代码。
onmouseupme
cursor(member"woniu")
end
onmouseleaveme
cursor0
end
至此,我们的工作好像做好了。
是不是觉得还有点缺陷呢?
有!
每个代码都要复制/粘贴一遍,太麻烦了。
于是我们想到了行为,behavior。
behavior是director的一个重要概念。
他可以大大方便lingo的编写。
特别是对于大量功能相同的代码尤其显著。
简单的说behavior的作用就是让你把编好的lingo代码重复多次应用。
director中现在已经把帧脚本和sprite的脚本作为behavior了。
凡是角色库中有
图标的都是behavior。
以本例为例子,编写好的脚本是角色1,鼠标拖拽这个脚本分别放在舞台上的三个圆圈对象上面,鼠标会变成加号表示可以拖,然后就可以了。
这样就实现了编写一次应用多次。
同样前面写的frame脚本gotheframe也可以直接拖拽到frame脚本通道中。
其实behavior远远没有这么简单。
它的功能比现在使用的强大得多。
我们在紧接教程中可以继续讲解。
这个例子是对光标的一种控制。
这里光标是没有的也就是cursor为200。
一个sprite跟随着光标移动而移动。
使用的是themouseh和themousev分别获得当前的鼠标水平位置和垂直位置。
整个电影只有1个sprite
脚本写在frame脚本里面
onexitframe
sprite
(1).locv=themousev--方块的垂直坐标跟着鼠标的垂直坐标。
sprite
(1).loch=themouseh--方块的水平坐标跟着鼠标的水平坐标。
cursor200
end
为什么要写在frame脚本里面呢?
因为这个动作要求不断触发,但是又不依赖于sprite,这里没有用到任何需要sprite来触发的动作。
仅仅是对sprite进行操作。
而frame脚本符合触发条件。
虽然是gotheframe定住播放头,但实际上是播放头在原地打转,是一个循环。
因此这里面的事件是不断触发的
什么是Lingo?
使用过Director的朋友一定都知道Lingo语言。
Director的动画制作功能最容易为大家所接受,但是Lingo语言就有点让人感到神秘兮兮,光是纷繁复杂的函数和多而庞杂的变量就让人望而生畏。
其实Lingo没有我们想象的那么复杂,甚至有些非常简单。
如果你和我一样想学习Lingo又有编程恐惧症的话,我们就一起开始下面的课程吧^_^。
首先明白一个最基本的问题。
为什么需要在Director中进行编程呢?
举1个非常简单的例子:
如果制作完成了一个没有任何lingo语言的电影,电影将会按照每秒钟15帧画面的速度“勇往直前”的播放下去直到最后一帧,即便你如何干涉都没有用。
对于使用它的人来说,这是一个非常糟糕的导航。
而Lingo就可以改变这种状况。
使用Lingo,你可以让播放头停在第1帧。
直到你按一个按钮才继续。
或者你可以直接跳到第22帧。
你也可以调用别的电影,甚至打开网页。
Lingo还有更多更强的功能,可以完全控制cast成员和sprites,启动电影的播放和暂停等等,甚至可以控制你的计算机,例如关机,退出director,或者弹出对话框通知用户一些事情。
下面的1个例子就是一个非常简单的Lingo。
如果您安装了Shockwave8.0player.您就可以看效果。
如果您看不到下面的效果,请点击下载,并安装Shockwave8.0player。
因为我们以后的范例都会用到这个插件。
EasySea.COM
下一页
Message窗口和ListView
在正式开始Lingo学习之前,我们先来认识一些用于操作和调试的小东东,Message窗口和属性面板
第一课:
在Message窗口中调试Lingo
启动Message窗口我们只要在Director工具栏上单击
按钮即可.
这就是Message信息窗口。
在里面输入的Lingo语言都可以直接执行。
可以用于我们试验Lingo语言。
下面我们就来试验一条。
Put15+20
输入完毕后按回车可以直接看到运算的结果。
Put语句的作用
Put语句的作用就是显示一些信息。
格式是
Put表达式
直接用在Message窗口里面可以用来调试程序,或者看到一些信息。
比如:
putthetime --显示的是当前时间thetime是一个系统时间函数
puta--显示a这个变量里面的值,如果变量没有定义的话,显示的是
put15x20--显示计算结果
刚才我们试验了一条基本的显示命令.下面我们来做一些更好玩的东西.让Director弹出一个窗口.就象我们在网页上看到的弹出窗口那样.
在Message窗口中输入alert"我要学Lingo."然后直接回车.一个弹出窗口就做好了.按确定就可以关闭他.
alert的作用就是制作弹出窗口显示alert后面的信息。
恩?
是不是还不过瘾?
我们现在让他来打开5dmedia的首页.在Message窗口中输入
gotoNetPage""
然后回车,只要你连在网上就能弹出浏览器窗口进入首页.
gotoNetPage的作用是连接到网页
gotoNetPage的作用是连接到网页.命令格式是:
gotoNetPage"URL",{"targetName"}
Url意思是某个地址,targetName为网页中的某个目标帧.(如果对Target不了解请到查阅Dreamweaver3一学就会分帧篇.例如 gotoNetPage"","_blank"这句话的意思就是新开一个窗口打开。
说到这里你有没有联想到什么?
对了:
)可以利用Director的这个特点制作网页的导航条,是不是很帅阿?
下面还有3条命令就是
Quit--退出Director
restart--重启动机器
shutDown--关机
不过猫法师劝你不要马上试验,:
)因为我们还有好玩的东西在后面呢。
关了机就没的玩咯。
Ok我们的Message窗口试验就到这里。
在Message窗口中我们输入的Lingo语言马上都可以执行。
但是用它来编程是不行的。
我们可以把他作为一个试验语言的好工具。
而且可以用它来获取一些你想要的信息。
例如:
我们在舞台上用工具直接画一个椭圆。
放在分镜表(Score)的第一个通道中。
然后在Message窗口中输入
Putthelocofsprite1
回车我们就可以得到Sprite1的注册点(registrationpoint)的位置。
(注:
每个Sprite都会有一个registrationpoint,可以用来定位sprite的坐标值,在上面图片该点在圆的左上角)。
同样我们也可以从右边属性面板看到它的值
X,Y(34,31)。
读者注意不要和下面的l和t混淆l是左边位置t是顶部位置,合起来表示sprite的左上角。
这里正好注册点在sprite的左上角,所以数值一样。
我们还可以把属性面板切换到ListView列表显示状态。
我们前面做的Putthelocofsprite1得到的两个坐标分别是H和V也就是(34,31)我们也可以使用
Putthelocvofsprite1来单独获得垂直坐标。
ListView是一种很有用的模式可以方便我们观察Sprite的属性。
go来go去制作一个简单的导航
Ok上次我们使用Message窗口进行了一些调试工作.这次我们就来正式学习.首先请大家看上面一个范例.(如果你不能观看,请到首页下载Shockwave8player插件.因为我们以后也会用到他.)
我们来分析一下这个例子.页面上有三个按钮,单击任何一个跳转到一个画面.然后按返回按钮返回.其实导航结构是这样的.主界面-->子模块,然后子模块-->主界面.
我们首先看看时间轴是如何安排的.时间轴上首先第一段是程序的封面和三个按钮,第二段是错了的画面,第三段是对了的画面,第四段是错了的画面.所以上面的例子实际上就是从封面跳转到下面不同的时间轴段,然后按一个按钮就返回封面.
下面我们来实际制作这个程序,首先导入界面的四张图片,然后拖拽到时间轴上.每段5帧画面.
主界面1-5帧.第二段10-15帧第三段20-25帧第四段30-35帧.
接下来是跳转按钮.选好工具栏上的Button在主界面上绘制按钮.(如果工具栏不出来可以选择菜单window->Toolbar).依次放在Director的第2第3第4通道中.
这些都制作完成之后,再制作返回按钮.由于接下来所有子模块用的都是同样的按钮.所以画一个就可以.并且帧数从10-35贯穿所有模块.
Ok现在我们的程序框架基本上搭建好了接下来就是填写程序了.如果现在我们马上运行,程序会从头放到底.没有任何变化所以我们现在的第一个任务就是要停住画面.为每一段画面都加上语句停止画面.
首先将播放头移动到第一段的最后.也就是第5帧画面,双击上面脚本通道中的单元格.也就是图中的黑色方块处.
在弹出的脚本窗口中,输入脚本. gotheframe这句命令使播放头停止在这个画面上.
这里解释下里面的命令的作用.
Onexitframeme--当退出帧的时候
gotheframe--停止在这帧画面上
end--该段程序结束
现在播放电影可以看到,整个程序在第5帧画面停止不走了.同样道理在其他几个场景最后一帧里面写好同样的语句.分别是5\15\25\35帧.
刚才我们在整个画面中给帧上了脚本.让播放头停在帧上不动.接下来实现点按钮,跳转到某段画面.因为我们是按了按钮才发生动作.所以我们要给按钮指定脚本.在屏幕上选中一个按钮选择鼠标右键,在菜单中选择Script.
脚本这样写:
onmouseUpme--当鼠标从按钮抬起时候
goframe10--跳转帧10
end--结束事件
播放电影可以看到一旦按了第一个按钮之后就跳转到第二段画面.我们如法炮制给主界面中剩下的按钮加上脚本.分别是goframe20和goframe30.要跳回去怎么办呢?
给跳回按钮加上脚本goframe1
oK现在为止整个程序之做好了.这个例子主要用了go语句
格式是Goframe<帧数>--跳转到某帧
Gotheframe --停止在某帧
同时我们还分别试验了给一个帧加上脚本和一个按钮加上脚本.也许你现在还有点糊涂,没关系更多的概念我们再下次一个个讲解.请大家思考制作这样一个例子.
做一个类似Powerpoint简报的东西,给5张图片,依次显示,每次显示一张图片.按了按钮之后就显示下一张.
如果您很轻易的做好了程序再想想如何加一个按钮倒过来向前播放.
Lingo语言基础
一、事件与命令
事件
在上次的教程中,我们已经初步试验了Lingo的编写和运行.这次我们要对于Lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。
还记得上次我们让电影停在某帧时候的脚本是如何的么?
Onexitframe
gotheframe
end
这里面就包含了一个Lingo的最基本的一点。
Lingo是基于事件(event)的。
当某个事件发生的时候,才会执行下面的动作。
在上面这个脚本中gotheframe这句话是在Onexitframe(退出改帧)的时候执行的onexitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。
同样,下面的一些都是Lingo的也就是事件。
Onmousedown --当鼠标按下
Lingo语句
end
OnstartMovie--电影一开始
Lingo语句
end
OnenterFrame--当播放头进入一帧
Lingo语句
end
Onbeginsprite --第一次播放这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lingo 语言基础 语言 基础