选择显示字体大小

flash mx 新的闪烁世界(第九天)

flash mx – 新的闪烁世界(第九天)

flash mx的出现让我们看到了实现问题的各种捷径,而且内部对象全部object化,而其中一个让人兴奋的对象既是button object——曾经是不可programmable(as控制)的顽固分子之一。

button对象是object对象的继承(言下之意即是所有object的属性方法都可以使用),现在已经可以和movieclip一样可以有自己的instance name属性,同样在设置movieclip的instance name的propertyinspector面板内设置(ctrl+f3,图1)。



(图1)

button的instancename可以看作为一个指针id,指向被action编程操作movieclip;当然,逆向地,动态产生的movieclip如果具有了使用了button对象的方法,也即是“变成”了button对象的指针id

我们做两个例子来看看:

1) 手动制作的button。通常,在编程风的跟随下,很多人已经走入了编程的误区(走火入魔),就是无论什么都主张编程(不要学我哦,我写教程而已),这其实解决问题需要在速度和效率间寻找那个临界点,如果你觉得自己手动速度更快一些就可以用手动来做,例如图1的按钮就是很简单的用一个rectangle tool做出来的button,并且给于instance name“btn1”。

2) 虽然手动在某种情况下是非常直观而且迅捷的,但是我们也看看另一个做法:

movieclip.prototype.makeboxv2 = function(x, y, l, w) {

this.l.neto(x, y+w);

this.l.neto(x+l, y+w);

this.l.neto(x+l, y);

this.l.neto(x, y);

};

with (btn2) {

moveto(120, 180);

beginfill(0x333333, 100);

linestyle(.1, 0x333333, 100);

makeboxv2(120, 180, 65, 16);

endfill();

}


改进的makeboxv2支持长和宽的设定,这样可以实现制作长方形;程序动态产生一个btn2,并且用粗度.1并且用色码333333的颜色填充颜色代码为333333的65x16的长方形区域,这样就有了形成一个button的前提。

接着,赋予button的属性,即把button的事件给于movieclip:

btn2.onrollover=function(){this.myclr=new color(this);this.myclr.setrgb(0xdddddd)}

btn2.onrollout=function(){this.myclr=this.myclr.setrgb(0x333333)}


接触过flash 5的朋友也许一下就看到里面用到了color对象,这个对象在flash mx没有太大的改进,所以我们也就不多说它;把onrollover鼠标浮动事件的handler写为一个function,并设置这个按钮的颜色为发亮的0xdddddd;由于鼠标不会在浮动上之前就会有rollout,所以把初始化color对象的语句可以写入onrollover事件。

测试一下两个不同实现的结果:


(图2)

属性:

button对象在默认状态下的属性是:

usehandcursor = true;

enabled = true;


usehandcursor在true状态下是当鼠标移动上来时显示手形图像,反之保持鼠标箭头状态,说到enabled,就直接影响button的状态了,默认状态总是true,否则当前不响应用户鼠标事件,这个在不需要用户响应的时候十分有效

方法:

button对象的方法很简单,只有getdepth一个,目的是获取目标button的level:

trace(btn2.getdepth());

tab键关联

在处理成组的很多button 同时存在时,会遇到按tab键按钮间组内切换的情况,在flash mx中会把需要切换的button按照tabindex顺序排列:

button.prototype.onkillfocus=function(){trace("kill focus"+this._name)}

btn1.tabindex=2

btn2.tabindex=3

btn1.tabenabled=btn2.tabenabled=true



(图3)

试验的结果发现了问题,在有手动和程序实现的button同时存在的时候,tab并不起什么作用,而在无手动button的时候却只能使tabindex和tabenabled起作用,但killfocus毫无响应,可见程序作的按钮的可靠性。

btn2.tabenabled=true

btn2.tabindex=3


(图4)

button对象大概就是这个样子了,值得高兴的是可以用程序作button了,不过程序和设计总是有个点,那个点的把握就决定着flash mx的应用性。

源代码:

http://www.dnvs.net/tutorial/flash_mx/day9.fla

(最后感谢网友飘血赞助dnvs.net超级快空间,我以后会放置我的作品在上面)

tips:

button对象的getdepth其实也就是movieclip的getdepth(代码号全为105)。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons