首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典-> 网页浏览
一个按钮的两种做法_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.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·OFFICE编程思路(VBA)-.NET教程,数据库应用
·目前最好的JSP分页技术-JSP教程,Jsp/Servlet
·在JAVA中使用文档对象模型DOM经验小结-JSP教程,Java技巧及代码
·J2EE平台WEB组件开发中如何使用定制标签-JSP教程,J2EE/EJB/服务器
·防止Access数据库被下载-ASP教程,数据库相关
·XMLHTTP 对象及其方法简介-.NET教程,XML应用
·在ASP.NET应用中插入flash动画-.NET教程,Asp.Net开发
·Java学习笔记(一)--熟悉开发环境-JSP教程,Java基础
·怎样在C#中调用Delphi6写的DLL-.NET教程,C#语言
·ASP.NET 2.0 中的母版页详解-.NET教程,Asp.Net开发
最新文章
·关于seo最佳的实践方法_seo网站优化
·photoshop cs3新增黑白转换命令原理剖析_photoshop教程
·抛弃acdsee windows live照片库体验_windows vista
·给网络赚钱新手的一些建议_网赚技巧
·google adsense巡讲大会[日期已更新]_网赚技巧
·“口碑营销”的关键问题是在效率_站长心得
·本地分类信息网站线下推广招数_站长心得
·如何提高网站的“友好指数”?_站长心得
·个人网站站长:商业化还是非商业化?_站长心得
·网站排名对网站推广的价值_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭