和蜗牛一起学DIRECTOR 第二讲 按钮效果http://blog.sina.com.cn/s/blog_594398e801019a2f.html
任何一个程序必不可少的交互元素就是按钮,我们的LINGO编程也从按钮交互开始。在开始之前,先说几个概念。虽然之前我已经说过,假定你已经会了DIRECTOR的基础操作,但毕竟是英文软件,每个人对单词的理解和翻译是不一样的。
舞台,打开/关闭的快捷键:CTRL 1,英文:Stage
演员表,打开/关闭的快捷键:CTRL 3,英文:Cast
剪辑室(时间线),打开/关闭的快捷键:CTRL 4,英文:Score
工具窗,打开/关闭的快捷键:CTRL 7,英文:Tools
属性面板,打开/关闭的快捷键:CTRL ALT S,英文:Property Inspector
演员,演员表中的任何一个方格内的原素,英文:Member
精灵,拖放到舞台或者剪辑室内的演员,称之为精灵,英文:Sprite
通道,剪辑室内,每一个行均称之为一个通道,英文:Channel
电影,一个独立的DIRECTOR文件,英文:Movie
以上是我们在学习的过程中,暂时要涉及到的一些概念。
分析一个最简单按钮,随便打开一个软件,找一个按钮,实验一下,当鼠标划过按钮的时候,按钮会变一个样子,包括变样式、变色、位移、变大等等。
本节我们先以变样式为例。变样式无非就是两张图,正常的时候一张,鼠标划过是一张。请你自行准备两张大小一样,样式不一样的图。导入演员表,分别命名为button,button-enter。将button拖放至剪辑室。添加帧循环代码至帧脚本通道
注:帧脚本通道指剪辑室内标尺上面的那一个通道。
on exitFrame me
go to the frame
end
新建脚本演员,添加如下代码,并将脚本附加给剪辑室中的按钮精灵。
注:本教程中在未做申明的时提到的脚本演员,均为Behaviorl类型,如须修改脚本类型,请在演员表中选择脚本演员,打开属性窗口,选择Script面板,在TYPE类里面修改。
on mouseenter me
cursor 280
sprite(me.spritenum).member=member("button-enter")
end
on mouseleave me
cursor -1
sprite(me.spritenum).member=member("button")
end
现在运行程序,将鼠标划过按钮,看到变化了吧?
下面我们详细讲解按钮代码:
第一句:on mouseenter me
这是一个事件,事件是LINGO中重要的一个元素,所有的事件均以On单词开头,end单词结束,on 和end中间的代码,为事件触发时要执行的代码。mouse,鼠标;enter,进入;综合起来就是鼠标进入时触发的事件,进入哪里呢?当然是这段代码所在的那个精灵。下面你还会看到on Mouerleave事件,这个是当鼠标移出时触发。
第二句:cursor 280
cursor 鼠标指针,280为编号,即手型鼠标指针编号,那这句的作用就是鼠标变为手型。下面你还会看到-1,-1代表还原,也就是换成上一次鼠标指针的形状。
第三句:`sprite(me.spritenum).member=member("button-enter")`
这句有点长,但其实很好理解。前面我们已经提到,sprite是精灵,member是演员,但精灵和演员在使用时必须指定是哪个,就像我们找人,喊一声“唉”,“人”,肯定是没人回应的,但你喊“张三”,那自然有人回应。所以在这里你就看到了在sprite和member之后存在了括号,括号内就是哪个精灵,哪个演员了。
spirte后面的括号中的me是什么呢?英文就是我,这个我是谁呢?现在执行的mouserenter事件,当然就是当前鼠标移入到那个精灵了。spritenum,那就是精灵所在的通道号。合在一起理解一下:
当前通道的精灵使用的演员换成(=号就是换成的意思啦)演员“button-enter”
现在你应该理解这段按钮效果的代码了吧?
做程序,不能死搬硬套,那你永远只能去抄代码,要去理解,这样才能为我所用。
下面我再给出几段代码,你替换刚才的按钮效果试一试:
代码一:
on mouseenter me
cursor 280
sprite(me.spritenum).height=sprite(me.spritenum).height+2
sprite(me.spritenum).width=sprite(me.spritenum).width+2
end
on mouseleave me
cursor -1
sprite(me.spritenum).height=sprite(me.spritenum).height-2
sprite(me.spritenum).width=sprite(me.spritenum).width-2
end
这段代码里面除了上面我们说过的,用到height和width,英文意思就是高度和宽度,我们来解释其中一句:
sprite(me.spritenum).height=sprite(me.spritenum).height 2
当前通道的精灵的高度变成当前通道精灵的高度加2.
很明显,那就是鼠标移入的时候变大。
代码二:
on mouseenter me
cursor 280
sprite(me.spritenum).blend=60
end
on mouseleave me
cursor -1
sprite(me.spritenum).blend=100
end
这段代码中我们用到了blend,这个精灵的透明度属性,选中精灵,打开属性面板,在sprite面板nk行后面,你能看到一个后面标记了%的下拉列表,这就是精灵的透明度,不明白这个概念的同学,你可以改一下透明度试试效果。
精灵透明度的取值范围是0到100,超过这个范围不可以哦。
好了,这一讲我们就结束了,最后再嘚啵两点
1 这一讲中,给出的代码不是最合理、最优化的代码,为的是先让大家理解LINGO的写法和入门。下一讲我们来讲如何写一个合理的按钮代码。
2 很多人喜欢用FLASH做按钮,然后导入到D中,个人不喜欢这种方式,理由如下,仅供参考。
第一,FALSH是矢量的,虽然说是可以无线缩放,但在一些视觉上,还是无法达到位图的细腻。同时由于其是矢量的,运行起来对CPU的消耗比位图要高的多
第二,修改起来很麻烦。
第三,虽然F和D都是一家出的,但他们的兼容不是那么的好,在一些特定的环境下,还是要出问题的。
3 其实在PS里面切按钮图片很简单,选中一个按钮的几个图层,然后按住CTRL,分别按A,C,N,然后回车,然后再CTRL V,CTRL S,就这么几步。试一下就知道。
4 ……超了?第四点了?哦 算了,下节课再说!