变量
学过编程的同志都知道所有编程语言上来都先说变量.但是为了照顾大家的情绪,避免把这个教程显得太乏味.我们现在才来讨论变量.
什么是变量?变量好比一个房间,堆放你需要储存的东西.在实际编程中变量有着很重要的作用.同样我们也经常用变量来储存一些比较复杂的表达式.这样可以简化我们程序的编写.变量之所以叫做变量是因为它的值是可以变化的.下面我们先来看看变量的一些操作.
赋值,就是给变量以内容.可以这样写.
变量名=变量值或者表达式
例如: a=1 a=3*5
变量的类型:在Lingo语言中不同于其他的一些高级语言,要声明变量的类型.Lingo的变量类型是由赋予的内容决定的.我们最常用的是字符和数字两种值.
比如:a=1 变量a的类型是数值型. a="1" 变量a的类型是字符型.注意这里虽然都是1.但是带上""的就是字符串.不带的就是数值.
首先我们看些字符串的操作
& 表示字符串连接.执行 Put "ab"&"cd"得到的结果是 "abcd"
&& 表示字符串连接当中加上一个空格.执行 Put "ab"&&"cd"得到的结果是
"ab cd"
String(表达式) 将数值转换成为字符串 例如 put string(3*5) 结果为 "15"
put string(5)结果为 "5"
numtoChar(整数表达式) 将数值转换为字符串,这个数值为字符串的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 mouseup
put "1" into field "result"
end
如果大家想一个个给按钮写Put "X" into field "result"的话 那么我的教程是失败的.如果我有100个按钮的话一个个写过来不要写死?我们要用上次说的behavior行为的概念.
按钮全部放到流程线上以后我们可以发现.如果我们仔细观察的话我们可以发现这样一个规律.那就是按钮数和sprite数正好相差1."1"按钮是Sprite
2."2"按钮是Sprite 3.我们是否可以用这个特点做文章呢?
on mouseUp me
buttonvalue=string(the currentspritenum-1)
put buttonvalue into field "result"
end
下面就是我写的一个behavior,核心思想是取得当前sprite的编号,然后-1作为field的内容,关键的语句是the currentspritenum这个系统变量可以取得当前正在操作的sprite的号码,然后减1,再用String函数变换成为字符串赋值给buttonvalue变量.这样的话就可以实现按钮和值的统一.这里我们使用变量是为了让语句看起来更间洁不然我们写put
string(the currentspritenum-1) into field "result"也可以,但是太长了可读性就差了.
接下来我们又发现一个问题,那就是我们新按按钮之后原先的值就消失了.正常的计算器显然不是这样的.如何办呢?
on mouseUp me
content=the text of member "result" --取得当前文本域的值使用系统变量the
text of member
buttonvalue=string(the currentspritenum-1)
put content&buttonvalue into field "result" --让当前文本域的值加上当前相加的值
end
OK我们的behavior写好了.然后一个个赋给所有的按钮.我们还剩下最后一个Back按钮没有制作.
on mouseUp me
content=the text of field "result"
stringlength=length(content)-1
nowcontent=chars(content,1,stringlength) --这里我们取子串删除.取得除了最后一个字符以外的所有字符也就是删除最后一个字符.
put nowcontent into field "result" --然后重新赋值给文本域.
end
Ok劣质计算器就做好了.
如果你想要在运行状态下在文本域中输入文字.可以使用sprite(编号).editable =true来设定.当然首先要将该Sprite
木偶化.
on beginsprite me
puppetSprite 1, TRUE --将Sprite木偶化
sprite(1).editable = TRUE --将sprite可编辑.
end
Ok我们到这里基本上到了入门教程的尾声,这里我们最后给大家一个技巧就是使用注释语句.很多时候我们在编写Lingo语言的时候,需要对一些语句进行注释.这样的好处是以便于以后自己看一下编程序的思路.不至于若干天之后自己也看不懂.注释在lingo中是不会被执行的.它的开头用
"--"表示.在Director中用红色表示.大家可以发现我在整个教程中已经反复用到了注释语句.同样.注释语句的还有一个好处就是调试程序的时候方便.有些语句我们暂时想禁止他看看会有什么效果.我们只要在前面加上"--"就可以让他暂时变成注释不起作用.下次需要的时候只要把"--"删除就可以了.在此要感谢Arky给我做了精彩的演示,让我体会了它的强大.最后想告诉大家的是,与其多看理论不如动手实践.自己做和看别人做是完全不一样的.会有很多意想不到的事情发生.这些将是你宝贵的经验.
作者后记:写到这里,我们的Lingo语言基础教程暂时告一个段落了.在编写的过程中,读者热情的催促是我完成它的动力.本来写这个教程的初衷是因为看到了国外的一片Lingo语言教程.觉得是我见过的少数Lingo语言教程之一.当时想把他翻译过来给大家欣赏.但是在照搬改组了前2篇之后登时发现教程的内容偏少.于是在左思右想之后决定重新编写.于是把老外的教程压缩进入第2篇,从第3篇开始全部重写.搬出了4本Lingo语言的书进行参照.由于工作繁忙加上要重起炉灶,所以教程进行特别缓慢.恳请大家谅解.上面的11篇还只是Lingo魔法书的第一页.我们将在以后的日子继续见面的.
机器猫上.