lingo_语言基础_第1页
lingo_语言基础_第2页
lingo_语言基础_第3页
lingo_语言基础_第4页
lingo_语言基础_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

lingo 语言基础一、事件与命令事件在上次的教程中,我们已经初步试验了lingo的编写和运行.这次我们要对于lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。还记得上次我们让电影停在某帧时候的脚本是如何的么?on exitframego the frameend这里面就包含了一个lingo的最基本的一点。lingo是基于事件(event)的。当某个事件发生的时候,才会执行下面的动作。在上面这个脚本中 go the frame这句话是在 on exitframe(退出改帧)的时候执行的on exitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到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得到的结果是 ab cdstring(表达式) 将数值转换成为字符串 例如 put string(3*5) 结果为 15 put string(5)结果为 5numtochar(整数表达式) 将数值转换为字符串,这个数值为字符串的ascii值.put numtochar(65)的结果是大写的a.相反的chartonum(字符串)就是把字符转换成为asc码选取字符串的长度 length(字符串) .例如put length(abcd)结果为4.删除字符串中的字符取子字符串 chars(字符串表达式,第一个字符串,最后一个字符串)比如put chars(macintosh,2,4)- 结果为aci从第2个取到第4个.这是一个假冒伪劣的计算器.因为他更本不能计算.只能显示数字和擦除数字.在这里要给大家展示的是文本域的操作lingo.为了使得问题尽量的简单.我们来看一个按钮显示文本是如何做的.首先在舞台上用工具栏上的field按钮在舞台上制作一个文本域.然后在属性面板里面填写上文本域的名字.我们这里取名result.然后在舞台上画一个按钮.标题为1.整个时间轴这样安排.当然我们不能忘记适用帧脚本停住画面.sprite 1是文本域 sprite 2是按钮.ok我们的基本动作好了.下面我们要安按钮给文本域写数字.lingo语言是如何的呢?文本域中的值可以这样来给定.put 变量或者表达式 into field 文本域名文本域名我们在例子中是result.对于1 这个按钮可以这样编写程序on mouseupput 1 into field resultend如果大家想一个个给按钮写put x into field result的话 那么我的教程是失败的.如果我有100个按钮的话一个个写过来不要写死?我们要用上次说的behavior行为的概念.按钮全部放到流程线上以后我们可以发现.如果我们仔细观察的话我们可以发现这样一个规律.那就是按钮数和sprite数正好相差1.1按钮是sprite 2.2按钮是sprite 3.我们是否可以用这个特点做文章呢?on mouseup mebuttonvalue=string(the currentspritenum-1)put buttonvalue into field resultend下面就是我写的一个behavior,核心思想是取得当前sprite的编号,然后-1作为field的内容,关键的语句是the currentspritenum这个系统变量可以取得当前正在操作的sprite的号码,然后减1,再用string函数变换成为字符串赋值给buttonvalue变量.这样的话就可以实现按钮和值的统一.这里我们使用变量是为了让语句看起来更间洁不然我们写put string(the currentspritenum-1) into field result也可以,但是太长了可读性就差了接下来我们又发现一个问题,那就是我们新按按钮之后原先的值就消失了正常的计算器显然不是这样的.如何办呢?on mouseup mecontent=the text of member result-取得当前文本域的值使用系统变量the text of memberbuttonvalue=string(the currentspritenum-1) put content&buttonvalue into field result -让当前文本域的值加上当前相加的值endok我们的behavior写好了.然后一个个赋给所有的按钮.我们还剩下最后一个back按钮没有制作.on mouseup mecontent=the text of field resultstringlength=length(content)-1nowcontent=chars(content,1,stringlength)-这里我们取子串删除.取得除了最后一个字符以外的所有字符也就是删除最后一个字符.put nowcontent into field result -然后重新赋值给文本域.endok劣质计算器就做好了.如果你想要在运行状态下在文本域中输入文字.可以使用sprite(编号).editable =true来设定.当然首先要将该sprite 木偶化.on beginsprite mepuppetsprite 1, true -将sprite木偶化sprite(1).editable = true -将sprite可编辑.endok我们到这里基本上到了入门教程的尾声,这里我们最后给大家一个技巧就是使用注释语句.很多时候我们在编写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的时候为取消设置还原成为莫认得箭头。在本例中我们制作的时候就是使用了这条命令 cursor 0想下事件应该是什么呢?对了,是on mouseleave me鼠标移开的时候还原光标。注意cursor 200是将鼠标隐藏。这个属性会在下面的例子中使用。还可以这样写 cursor(member 角色名称)。指定一个角色作为光标。我们在使用动画光标的时候就是制定了角色库中角色“woniu.实现的语句是on mouseup mecursor(member woniu)end这里顺便扯一下动画光标的制作。动画光标和彩色光标从director 6.5才开始有的。可以使用一系列的位图做成一个动画的光标。位图大小必须小于32x32象素,大于这个尺寸会自动缩小到32x32。颜色必须是256色。制作的时候首先导入图片。象上面我们导入了3个图片。然后选择insert-media element-cursor系统出来对话框。在右侧选角色,然后按add添加到光标中,按preview可以预览。automask系统会自动过滤白色。interval为自动切换的时间。制作完毕之后,角色库中会多一个角色。下标是一个小的绿色光标。这就是我们要的动画光标。每个按钮的代码都是下面的代码。on mouseup mecursor(member woniu)endon mouseleave mecursor 0end至此,我们的工作好像做好了。是不是觉得还有点缺陷呢?有!每个代码都要复制/粘贴一遍,太麻烦了。于是我们想到了行为,behavior。behavior是director的一个重要概念。他可以大大方便lingo的编写。特别是对于大量功能相同的代码尤其显著。简单的说behavior的作用就是让你把编好的lingo代码重复多次应用。director中现在已经把帧脚本和sprite的脚本作为behavior了。凡是角色库中有图标的都是behavior。以本例为例子,编写好的脚本是角色1,鼠标拖拽这个脚本分别放在舞台上的三个圆圈对象上面,鼠标会变成加号表示可以拖,然后就可以了。这样就实现了编写一次应用多次。同样前面写的frame脚本go the frame也可以直接拖拽到frame脚本通道中。其实behavior远远没有这么简单。它的功能比现在使用的强大得多。我们在紧接教程中可以继续讲解。这个例子是对光标的一种控制。这里光标是没有的也就是cursor 为200。一个sprite跟随着光标移动而移动。使用的是the mouseh和the mousev分别获得当前的鼠标水平位置和垂直位置。整个电影只有1个sprite脚本写在frame脚本里面 on exitframesprite(1).locv=the mousev -方块的垂直坐标跟着鼠标的垂直坐标。sprite(1).loch=the mouseh -方块的水平坐标跟着鼠标的水平坐标。cursor 200end为什么要写在frame脚本里面呢?因为这个动作要求不断触发,但是又不依赖于sprite,这里没有用到任何需要sprite来触发的动作。仅仅是对sprite进行操作。而frame脚本符合触发条件。虽然是go the frame 定住播放头,但实际上是播放头在原地打转,是一个循环。因此这里面的事件是不断触发的什么是Lingo?使用过Director的朋友一定都知道Lingo语言。Director的动画制作功能最容易为大家所接受,但是Lingo语言就有点让人感到神秘兮兮,光是纷繁复杂的函数和多而庞杂的变量就让人望而生畏。其实Lingo没有我们想象的那么复杂,甚至有些非常简单。如果你和我一样想学习Lingo又有编程恐惧症的话,我们就一起开始下面的课程吧_。首先明白一个最基本的问题。为什么需要在Director中进行编程呢?举1个非常简单的例子:如果制作完成了一个没有任何lingo语言的电影,电影将会按照每秒钟15帧画面的速度“勇往直前”的播放下去直到最后一帧,即便你如何干涉都没有用。对于使用它的人来说,这是一个非常糟糕的导航。而Lingo就可以改变这种状况。使用Lingo,你可以让播放头停在第1帧。直到你按一个按钮才继续。或者你可以直接跳到第22帧。你也可以调用别的电影,甚至打开网页。Lingo还有更多更强的功能,可以完全控制cast成员和sprites, 启动电影的播放和暂停等等,甚至可以控制你的计算机, 例如关机,退出director,或者弹出对话框通知用户一些事情。下面的1个例子就是一个非常简单的Lingo。如果您安装了Shockwave 8.0 player.您就可以看效果。如果您看不到下面的效果,请点击下载,并安装Shockwave 8.0 player。因为我们以后的范例都会用到这个插件。EasySea.COM下一页Message窗口和List View在正式开始Lingo学习之前,我们先来认识一些用于操作和调试的小东东,Message窗口和属性面板第一课:在Message 窗口中调试Lingo 启动Message窗口我们只要在Director工具栏上单击按钮即可. 这就是Message信息窗口。在里面输入的Lingo语言都可以直接执行。可以用于我们试验Lingo语言。下面我们就来试验一条。Put 15+20输入完毕后按回车可以直接看到运算的结果。Put语句的作用 Put语句的作用就是显示一些信息。格式是Put 表达式 直接用在Message窗口里面可以用来调试程序,或者看到一些信息。比如:put the time-显示的是当前时间 the time是一个系统时间函数put a -显示a这个变量里面的值,如果变量没有定义的话,显示的是无效。put 15x20 -显示计算结果刚才我们试验了一条基本的显示命令.下面我们来做一些更好玩的东西.让Director弹出一个窗口.就象我们在网页上看到的弹出窗口那样.在Message窗口中输入 alert 我要学Lingo. 然后直接回车.一个弹出窗口就做好了.按确定就可以关闭他.alert的作用就是制作弹出窗口显示 alert后面的信息。恩?是不是还不过瘾?我们现在让他来打开5dmedia的首页.在Message窗口中输入 gotoNetPage 然后回车,只要你连在网上就能弹出浏览器窗口进入首页.gotoNetPage的作用是连接到网页 gotoNetPage的作用是连接到网页.命令格式是:gotoNetPage URL, targetNameUrl意思是某个地址,targetName为网页中的某个目标帧.(如果对Target不了解请到5查阅Dreamweaver3一学就会分帧篇.例如gotoNetPage ,_blank这句话的意思就是新开一个窗口打开 。说到这里你有没有联想到什么?对了:)可以利用Director的这个特点制作网页的导航条,是不是很帅阿?下面还有3条命令就是 Quit -退出Directorrestart -重启动机器shutDown -关机不过猫法师劝你不要马上试验,:)因为我们还有好玩的东西在后面呢。关了机就没的玩咯。Ok 我们的Message窗口试验就到这里。在Message窗口中我们输入的Lingo语言马上都可以执行。但是用它来编程是不行的。我们可以把他作为一个试验语言的好工具。而且可以用它来获取一些你想要的信息。例如:我们在舞台上用工具直接画一个椭圆。放在分镜表(Score)的第一个通道中。然后在Message窗口中输入Put the loc of sprite 1回车我们就可以得到Sprite 1 的注册点(registration point)的位置。(注:每个Sprite都会有一个registration point,可以用来定位sprite的坐标值,在上面图片该点在圆的左上角)。同样我们也可以从右边属性面板看到它的值X,Y(34,31)。读者注意不要和下面的l和t混淆 l是左边位置 t是顶部位置,合起来表示sprite的左上角。这里正好注册点在sprite的左上角,所以数值一样。我们还可以把属性面板切换到List View 列表显示状态。我们前面做的Put the loc of sprite 1得到的两个坐标分别是H和V也就是(34,31)我们也可以使用Put the locv of sprite 1来单独获得垂直坐标。List View是一种很有用的模式可以方便我们观察Sprite的属性。go来go去制作一个简单的导航Ok上次我们使用Message窗口进行了一些调试工作.这次我们就来正式学习.首先请大家看上面一个范例.(如果你不能观看,请到首页下载Shockwave 8 player插件.因为我们以后也会用到他.)我们来分析一下这个例子.页面上有三个按钮,单击任何一个跳转到一个画面.然后按返回按钮返回.其实导航结构是这样的.主界面-子模块 ,然后子模块-主界面. 我们首先看看时间轴是如何安排的.时间轴上首先第一段是程序的封面和三个按钮, 第二段是错了的画面,第三段是对了的画面,第四段是错了的画面.所以上面的例子实际上就是从封面跳转到下面不同的时间轴段,然后按一个按钮就返回封面.下面我们来实际制作这个程序,首先导入界面的四张图片,然后拖拽到时间轴上.每段5帧画面.主界面1-5帧.第二段 10-15帧 第三段 20-25帧 第四段 30-35帧.接下来是跳转按钮.选好工具栏上的Button在主界面上绘制按钮.(如果工具栏不出来可以选择菜单window-Toolbar).依次放在Director的第2第3第4通道中.这些都制作完成之后,再制作返回按钮.由于接下来所有子模块用的都是同样的按钮.所以画一个就可以.并且帧数从10-35贯穿所有模块.Ok现在我们的程序框架基本上搭建好了接下来就是填写程序了.如果现在我们马上运行,程序会从头放到底.没有任何变化所以我们现在的第一个任务就是要停住画面.为每一段画面都加上语句停止画面.首先将播放头移动到第一段的最后.也就是第5帧画面,双击上面脚本通道中的单元格.也就是图中的黑色方块处.在弹出的脚本窗口中,输入脚本.go the frame 这句命令使播放头停止在这个画面上.这里解释下里面的命令的作用. On exitframe me -当退出帧的时候go the frame -停止在这帧画面上end -该段程序结束现在播放电影可以看到,整个程序在第5帧画面停止不走了.同样道理在其他几个场景最后一帧里面写好同样的语句.分别是5152535帧.刚才我们在整个画面中给帧上了脚本.让播放头停在帧上不动.接下来实现点按钮,跳转到某段画面.因为我们是按了按钮才发生动作.所以我们要给按钮指定脚本.在屏幕上选中一个按钮选择鼠标右键,在菜单中选择Script.脚本这样写:on mouseUp me -当鼠标从按钮抬起时候go frame 10 -跳转帧10end -结束事件播放电影可以看到 一旦按了第一个按钮之后就跳转到第二段画面.我们如法炮制给主界面中剩下的按钮加上脚本.分别是go frame 20 和go frame 30.要跳回去怎么办呢?给跳回按钮加上脚本go frame 1oK现在为止整个程序之做好了.这个例子主要用了 go语句 格式是 Go frame -跳转到某帧Go the frame -停止在某帧同时我们还分别试验了给一个帧加上脚本和一个按钮加上脚本.也许你现在还有点糊涂,没关系更多的概念我们再下次一个个讲解.请大家思考制作这样一个例子.做一个类似Powerpoint简报的东西 ,给5张图片,依次显示,每次显示一张图片.按了按钮之后就显示下一张.如果您很轻易的做好了程序 再想想如何加一个按钮倒过来向前播放.Lingo 语言基础一、事件与命令事件在上次的教程中,我们已经初步试验了Lingo的编写和运行.这次我们要对于Lingo的一些基础知识进行探讨.我们首先从一个最简单的脚本进行分析。还记得上次我们让电影停在某帧时候的脚本是如何的么?On exitframego the frameend这里面就包含了一个Lingo的最基本的一点。Lingo是基于事件(event)的。当某个事件发生的时候,才会执行下面的动作。在上面这个脚本中 go the frame这句话是在 On exitframe(退出改帧)的时候执行的on exitframe就是一个事件,当这个播放头退出该帧事件发生了,才执行里面的语句,直到遇到end为止。同样,下面的一些都是Lingo的也就是事件。On mousedown -当鼠标按下Lingo语句endOn startMovie -电影一开始Lingo语句endOn enterFrame -当播放头进入一帧Lingo语句endOn 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语言endon exitframe -当播放头移处该帧的时候lingo语言endSprite脚本Sprite脚本应用于Sprite中。我们把Cast库中的演员拖到舞台之上以后就是Sprite了。在舞台上对准一个Sprite按右键在菜单中选择Script系统弹出对话框。这个脚本窗口里写的就是Sprite了。Sprite脚本在Sprite的一系列操作中才会有作用。比如,单击Sprite,双击sprite,鼠标在sprite上面,鼠标移出sprite。当我们想要对舞台上的某个东西操作,来发生动作的时候就可以用Sprite脚本了。上次的例子中我们要求按一个按钮跳转到第X帧。使用的就是Sprite脚本。那段代码就是On mousedowngo frame 15end当鼠标按下按钮这个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脚本的编写 单击工具栏上的就可以了.Lingo魔法书-导航语句上次我们探讨了关于Lingo语言的基本格式.从本次开始我们就来一个个实际的Lingo语言.今天我们学习导航命令.go语句 go frame -跳转到第某个画面,例子 go frame 20,播放头跳到第20帧.go the frame -播放头停在某个画面.go -跳到某个有标记的画面.go movie -从现在的电影跳转到另外一个电影中去.例如go movie hello 跳转到名字叫hello的电影中.下面是两个扩展命令go of movie -跳转到另外一个电影的某个画面.go of movie -跳转到另外一个电影的某个标记.go命令我们已经很熟悉了那就是可以使用go直接跳转画面.停住播放头.这些我们都在第一个例子中进行了一个试验.这次我们着重要说的是画面的标记mark.什么叫做标记呢,故名思意就是给一个帧做上一个标记.现在有这样的一个例子.我要跳转到第20帧,Lingo语言应该怎样写呢?go frame 20用了帧标记是怎样呢?比如我给20帧加上一个标记,名字叫做ok.我们可以这样写.go ok这两条命令是等价的.大家可以分别单击下面的两条语句来观察结果.在下手之前大家想一下,如果我到了第20帧想回来应该怎样写Lingo语句呢?读者也许会问,用了标记有什么好处呢?标记的好处至少可以有两条.1.好记.当我们的画面数非常多的时候我们是记不清楚什么地方是什么东西的.做了标记之后一目了然.2.标记可以移动.比如本来我们做了一个交互是跳转到20帧,等下修改程序之后变成跳到30帧.这个时候非修改你的Lingo语句不可.但是现在我们可以直接把标记用鼠标移动到30帧,就可以完成修改.对于制作是很方便的.哦忘记了最重要的事情,标记怎么做呢? 在Score的最上端就是标记区.在要做标记的帧上,单击这个地方,然后输入名字就好了.要删除一个标记.只要把标记拖出窗口就可以了.这里再提示一下,单击左侧的箭头会弹出下拉菜单.可以在里面选择标记.选中后播放头会直接跳到标记.还有两个左右箭头分别表示跳转到前一个标记和后一个标记.当你的时间轴太长的时候.这是一个很好的定位办法哦.Play语句 play frame -跳转到第某个画面,例子 play frame 20,播放头跳到第20帧.play the frame -播放头停在某个画面.play -跳到某个有标记的画面.play movie -从现在的电影跳转到另外一个电影中去.例如go movie hello 跳转到名字叫hello的电影中.下面是两个扩展命令play of movie -跳转到另外一个电影的某个画面.play of movie -跳转到另外一个电影的某个标记.play done -跳回上一次play的地方.比如在20帧执行了play 30.在30帧执行play done就会跳回20帧.Play 语句和Go语句大体相同,只是多了一个play done.凡是用play语句跳转的都可以使用play done跳转回去.有了play done就更加简单了.go语句和play语句都可播放另外一个电影文件.但是返回的时候go必须写清楚跳转回去的电影和帧数,而play只要用play done就可以回去了.书写更简单.看看下面的例子.单击语句可以执行.下面我们做一个练习.给你4张图片,要求你每单击一张图片就显示下面一张图片.单击最后一张图片显示第一张图片.就像下面的例子.上面就是这个例子的流程图.总体思路:播放每个图片的时候停住.单击图片跳转.设置一组标记方便跳转.1.停住图片把4个图托拽到流程线上.每个图的最后都加了go the frame语句.作用是让显示图的时候播放头定在原地.这4个脚本都是只和帧本身有关系.所以我们用frame脚本.2.进行跳转:接下来要得是单击图片往下走.因为是单击图片以后才做动作.因此命令要写在图片里面.也就是Sprite脚本.单击每个图片,按右键在里面写上语句,go t2 跳转到第二张.以此类推.事件因为是单击可以用 on mouseup me.当鼠标抬起.OK如果你做好了整个的程序. =进阶学习=这里给大家介绍一个小技巧这里如果不考虑最后一张图跳转到第一张的话.我们可以让所有的图片都是用一个脚本.go marker(1)marker()是一个函数专门用来返回下一个标记的帧数.mark(1)表示当前帧下一个标记的帧数.例如在t1这里mark(1)的值是t2的帧数也就是20.相当于执行了go frame 20.以此类推.marker(2)就是下2个标记帧数,mark(0)就是当前的. mark(-1)前一个.mark(t1)表示t1这个标记的帧数.作业:做一个展示的东西 有前后翻页箭头可以翻页.Lingo魔法书-Sprite玩具工厂(2)隐藏和替换上次我们介绍了Lingo的Sprite用法.下面我们来继续看一些Sprite的属性.隐藏和替换.首先我们来看看做多媒体项目最常用的一个应用制作三态按钮.光标移动到按钮上就换一种颜色.按下去又是另外一种颜色.移动出去还原.所谓三态,就是指正常状态,光标移动到上面的时候和按下去的时候.原理很简单就是有三张图片.然后在不同的事件下面进行切换. 我们可以看到角色库中的三个角色,角色1、角色2、角色3按钮。下面我们就来看关键语句。sprite(编号).memberNumsprite(编号).memberNum可以制定某个Sprite使用的是什么角色成员。比如上面例子,按钮在时间轴上为Sprite 1:sprite(1).memberNum=3这样就把红色按钮换成了褐色按钮,也就是角色3。整个制作过程是这样的,首先把角色1拖拽到舞台放在通道1中。也就是sprite 1。当然不要忘记加上帧脚本go the frame定住画面。然后给Sprite 1写上脚本。on mouseUp mesprite(1).memberNum=3 -将按钮替换为角色3按下去的状态endon mouseenter mesprite(1).memberNum=2 -将按钮替换为角色2移上去的状态endon mouseleave mesprite(1).memberNum=1 -将按钮替换为角色1还原为初始状态。end这里我们用到了三个常用的鼠标事件。Mouseup鼠标抬起,mouseenter鼠标进入,mouseleave鼠标离开.并且写在一个Sprite里面.对应它的不同状态.下面我们看第二个属性。单击上面的老头,老头消失。按钮老头出现。这是使用了visible属性。控制sprite的显示和隐藏。Sprite(2).visible=false -Sprite2不可见Sprite(2).visible=true -Sprite2不可见。拖拽老头到舞台作为sprite 2。然后给老头写上Sprite脚本on mouseup meSprite(2).visible=falseend要让按了按钮之后显示老头怎么办呢?修改下刚才的按钮脚本加入到mouseup事件中去.on mouseUp mesprite(1).memberNum=3 sprite(2).visible=trueendOk就可以了.Lingo魔法书-声音控制语句上两次我们谈到的都是Sprite的一些属性这次我们来试验一些声音视频控制方面的语句.请看下面的范例.我们按照一个个按钮往下分析.如果大家看到这个程序的时间轴的话会发现.这个时间轴上声音通道里面根本没有内容.声音是从什么地方来的呢? 这里我们使用的是PuppetSound语句.首先先请大家注意一个词语Puppet.Puppet的英文意思是木偶玩偶的意思.这是Director中比较有趣的一个概念.Puppet就是木偶化.什么是木偶化呢?就是把Director的控制权彻底交给Lingo来管理.比如PuppetSound语句,就是把声音控制权交给Lingo管理.原先我们播放声音一定要在时间轴上放声音才可以,现在我们完全可以自己使用Lingo语言进行控制了.也就是把声音做成了一个木偶用Lingo控制.Director可以控制的声音通道有2个,而lingo可以控制到4个.同样的有很多我们还可以对转场效果进行木偶化通过使用PuppetTransition.播放速度木偶化PuppetTempo.读者也许奇怪那么改变Sprite的高度之类的不也是木偶化么?对了,早在Director 4.0的时候对于Sprite的移动和改变都需要加上一句,set the puppet of sprite 号码 to true 把Sprite的木偶化状态设置为真.才可以进行对Sprite的操作.不过好像Director8.0已经不强调这种做法.可以直接对Sprite进行操作了.木偶化的好处就是给你强大的控制能力.下面言归正传.PuppetSound的用法.puppetSound 声音通道号, 声音角色 -在指定的声音通道中播放声音.puppetSound 声音角色 -直接播放声音puppetSound 0 -停止声音播放puppetSound 声音通道号, 0 -停止某通道声音.上面的播放按钮的代码是:on mouseUp mepuppetsound 1,song-声音通道1中播放Song声音角色end 停止的代码呢?这里我就不给出了:)所有按钮代码都用Sprite脚本也不用说了吧:)声音淡入:主要的语句是 Soundfadein格式可以是:sound fadeIn (声音通道号) -系统按照默认值淡入声音.具体参考Lingo辞典.Sound(通道号).fadein(时间) -按照给定的时间淡入单位是ticks一个ticks,相当于1/60秒因此.1秒钟就是60,2秒钟就是2*60.例子Sound(1).fadein(5*60) .淡入5秒钟.ticks是Director的计时单位以后经常会遇到.相反的还有Soundfadeout声音淡出语句.格式相同不再详细阐述了.音量降低sound(通道号).volume取值范围在0256. 0无声 256最响.在这里我的写法是:on mouseup mesound(1).volume=sound(1).volume-20end按一次音量自减一次20.音量还有一种控制方法.Director把系统音量分为8个级别.从0-7.0无声,7最响.the soundLevel这个语句可以控制系统的音量.语法结构为:the soundLevel用法:the soundLevel=值 .比如 the soundLevel=6Lingo魔法书-视频控制Lingo语言对于视频可以有完全的控制.甚至倒放电影,不相信?看看下面的例子.有点大500多KB.首先我解释一下播放按钮.我使用了一个黑色图片放在Sprite 1的位置.然后使用了如下的语句.on mouseUp mesprite(1).member=quickend还记得这语句么?制作按钮的时候我们使用过.把图片替换成为电影的角色quick. 以上的操作和电影Lingo无关,下面正式开始.sprite(通道).movieRate控制电影的播放速度.movieRate=0暂停播放.movieRate=-1倒放.movieRate=1恢复正常.下面就是暂停电影的按钮代码.on mouseUp mesprite(1).movieRate=0end继续代码怎么写呢?on mouseUp mesprite(1).movieRate=1end倒放呢?on mouseUp mesprite(1).movieRate=-1end播放速度也是可以做的.格式Sprite(通道号).movieTime 时间的基本单位是ticks也就是1/60秒.例如:sprite(1).movieTime=2*60停5秒如何写呢?最后我们来看循环按钮使用语句.member(成员号).loop 等于1的时候可以循环.等于0的时候不循环.循环不仅仅限于视频,声音也可以这样设置.在本例中这里代码为.On Mouseupmember(quick).loop = 1endOk下次我们就开始光标和文本框的Lingo介绍Lingo魔法书-光标和行为Director中光标也可以自己定义和制作.我们看看下面的一个例子:光标单击每个人脸就变成了一个动态的光标.移出按钮图片,光标就还原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论