Lingo魔法书--变量,字符串和文本域

4/7/2006来源:Director教程人气:11175

变量

  学过编程的同志都知道所有编程语言上来都先说变量.但是为了照顾大家的情绪,避免把这个教程显得太乏味.我们现在才来讨论变量. 什么是变量?变量好比一个房间,堆放你需要储存的东西.在实际编程中变量有着很重要的作用.同样我们也经常用变量来储存一些比较复杂的表达式.这样可以简化我们程序的编写.变量之所以叫做变量是因为它的值是可以变化的.下面我们先来看看变量的一些操作.

赋值,就是给变量以内容.可以这样写.

变量名=变量值或者表达式

  例如: 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魔法书的第一页.我们将在以后的日子继续见面的.

机器猫上.