电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 图形图象-> Director教程
一个按钮的两种做法_director教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

前言:director中制作一个可以活动的三态按钮是一个基本的技巧。对于这一个按钮的制作有着不同的方法。以下是两位朋友的一些方法希望对大家有所启示。有更多的见解请到5dbbs.yeah.net来告诉我们。

首先解释以下什么是三态按钮举一个例子一个红色按钮。鼠标移动上去是蓝色,按下去是黑色。这个按钮有三种状态。常规、鼠标在上面、按下去。下面就是两种方法。

--------------------------------------------------------------------------------

东影默:

按钮有三个状态,一、常规,二、滑过时,三、按下时.分别命名为:xxx1,xxx2,xx3;区别主要在最后一个字符
则xxx1的脚本为

on mouseEnter ---移入按钮时
  set cn= the name of the member of sprite the currentSpriteNum
  delete the last char of cn
  set cn=cn&\"2\"
  set the member of sprite the currentSpriteNum to cast member cn
end mouseEnter

xxx2的脚本为

on mouseLeave --移出按扭时
  set cn= the name of the member of sprite the currentSpriteNum
  delete the last char of cn
  set cn=cn&\"1\"
  set the member of sprite the currentSpriteNum to cast member cn
end mouseLeave

on mousedown --按下时
  set cn= the name of the member of sprite the currentSpriteNum
  delete the last char of cn
  set cn=cn&\"3\"
  set the member of sprite the currentSpriteNum to cast member cn
end mousedown

xxx3的脚本是

on mouseup 按下时
  set cn= the name of the member of sprite the currentSpriteNum
  delete the last char of cn
  set cn=cn&\"1\"
  set the member of sprite the currentSpriteNum to cast member cn

... ...

end mouseup


以上是我的方法,
还有一种法就是用Flash做按钮,然后在DR中使用,这样在DR中只要写
on mouseup
....
end mouseup
的脚本就可以了。
各位大虾如果有更好的方法请指教。

========================================================================

谢谢东影默的分享。 我想这是一个好的例子来学习behavior, 和oop的概念。
lingo中一个效果可以有多种方法实现, 最好的code应该是简洁,易懂, 易扩展,可重复使用的。 behavior就是一个范例。

director 说穿了, 是控制sprite的艺术, score 窗口的power 是我们大家都了解的。 而lingo 可以完全替代score窗口来完成对sprites 的控制。sprite behavior在lingo script的优先次序中名列首席, 我们就从这里开始。

button的效果最基本的就两种, 常态, 和鼠标划过时, 为了把问题简化,我们就看这两种状态。

基本思想是鼠标划过时, 舞台上的button sprite动态的替换为表现为rollover 的那个cast member, 而当鼠标离开这个sprite时, 该sprite 回复为表现为常态的那个member.
用lingo 来翻译就成了:

on mouseEnter
sprite(\"button\").member=member \"rollover\"
end

on mouseLeave
sprite(\"buton\").member= member\"常态\"
end

为了让这个表达更具有普适性, 我们可以用两个变量来分别代表常态的button member和rollover的button member, 就用normal 和rollover来作为变量名字吧, (最好在它们前面加上一个\"p\", 代表是 property variable). 好, 改写一下, 先宣布一下属性变量,

property pNormal
property pRollover

on mouseEnter
sprite(\"button\").member=pRollover
end

on mouseLeave
sprite(\"buton\").member= pNormal
end

问题是sprite 没有名字只有channel 的number, 我们不能用sprite(\"button\")来表示, 解决的方法其实出乎你意料的简单, 我们知道sprite script需要附在某个sprite 上来接受message, 而script 本身也是一个object 存储在RAM中, 我们可以利用一个简单的参数“me”来传递这个重要的信息, me 就代表附在当前那个sprite上的script , me 也有一个属性- spriteNum, 告诉我们当前的sprite 所在的channel number. Cool, 再改写一下,

property pNormal
property pRollover

on mouseEnter me
sprite(me.spriteNum).member=pRollover
end

on mouseLeave me
sprite(me.spriteNum).member= pNormal
end


好看多了, 进一步分析, 其实pNormal 就是舞台上已开始显现的那个button sprite 的member. 这是很明显的, beginSprite 这个handler 就是最好的位置来进行初始化的设定。

property pNormal
property pRollover

on beginSprite me
pNormal = sprite(me.spriteNum).member
end

on mouseEnter me
sprite(me.spriteNum).member=pRollover
end

on mouseLeave me
sprite(me.spriteNum).member= pNormal
end

到了这一步,可以说除了pRollover还是未知以外,其它的问题都解决了, 耐心读下去,
对于pRollover来说,我们可以用规则有序排列cast members的办法, 每个常态button member 后面都跟着它的rollover 的button member, 如果是这样的话,

pRollover = member(pNormal.number + 1)

不是很理想, 谁愿意这样小心翼翼的布置cast members 呢? 一个不小心搞错了位置就前功尽弃了。
不从member number 上动脑筋就从member name 上下手, 如果每个rollover button member的名字都使用其常态member的名字加上一个后缀, 例如“ rl ”, 那么

pRollover = member(pNormal.name&\"rl\")

这么做的好处是显而易见的, 你不需要为members 在cast 中的特定位置操心, 只需要按照一个命名原则就行了。 那有没有连命名也无须挂虑的方法呢? 答案是:Yes.

behavior 里有一个handler 是专门处理生成一个对话框来允许你赋值给参数的。 你也许用过behavior library里的行为, 每次drag 它到sprite 上时, 多半会弹出一个对话框, 如果我们也能用这个方式, 允许用户(我们自己)在使用这个行为时也弹出对话框, 让我们填入所需的信息,那是最理想不过的了。 事实上, 实现起来很简单,

on getPropertyDescriptionList me
return [#pRollover: [#comment: \"which member is the rollover member?\",\\
#format: #member,\\
#default: void]]
end

已经写的够长的了, 不细解释了, 记住return 是负责弹出对话框的命令, 而对话框是由一个property list 来定义的, property list 的写法是: [:] 冒号两边分别是property 和它的值。
\"\\\" 是行连接符, 表示这一行还没结束。

好,最后这个button 的behavior 如下:

property pNormal
property pRollover

on beginSprite me
pNormal = sprite(me.spriteNum).member
end

on mouseEnter me
sprite(me.spriteNum).member=pRollover
end

on mouseLeave me
sprite(me.spriteNum).member= pNormal
end

on getPropertyDescriptionList me
return [#pRollover: [#comment: \"which member is the rollover member?\",\\
#format: #member,\\
#default: void]]
end


你可以根据你的需要来扩展, 例如down button, button 按下后的动作, 是否要有音效, 等等。

希望我表达的你能明白。 最后谢谢你一直读完它。:):)


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·director技巧--关于text scroll 的问题_director教程
·lingo常用辞典- c_director教程
·lingo常用辞典- c_director教程
·lingo常用辞典- c_director教程
·lingo常用辞典- d_director教程
·lingo常用辞典- e_director教程
·lingo常用辞典- f_director教程
·lingo常用辞典- g_director教程
·lingo常用辞典- h_director教程
·lingo常用辞典- i_director教程

最新文章
·windows xp操作系统中隐藏的20个秘密_windows xp
·photoshop定义粗大虚线笔刷绘制幽默自画像_photoshop教程
·photoshop为七夕情人节打造亲密爱人相框_photoshop教程
·photoshop通道互换法调整照片色调_photoshop教程
·director生成文件减肥技巧_director教程
·用director控制动画gif_director教程
·director怎样制作自定义光标_director教程
·利用director.ini调试应用程序_director教程
·director使用mui xtra创建对话框_director教程
·director应用技巧_director教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号