万卷书   首页 > 电脑书籍 > Flash > Flash MX 新的闪烁世界(第九天)
 
我们做两个例子来看看:

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

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

Movieclip.prototype.makeBoxV2 = function(x, y, l, w) {

this.lineto(x, y+w);

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

this.lineto(x+l, y);

this.lineto(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,否则当前不响应用户鼠标事件,这个在不需要用户响应的时候十分有效。

上一页 下一页