#12001/5/17 20:27:05
我的教程四--setColor
这个东东是用flash5做的。
<一>调整器的制作
做一个button,大小是20X20,这个不用我多说了吧。再做个mc叫"按钮",把"button"拖入,在info面板中把它的中心定位在(0,0)。在button上点右键,选Action,写入如下内容:
on (press) {
startDrag ("", false, 0, 0, 0, 255);
}
on (release) {
stopDrag ();
}
解释一下,"0,0,0,255"顺序限定了拖动的左,右,上,下范围,不想让它左右移动,所以设"0,0,"。上下是关键,因为R,G,B的取值范围是0到255,所以把button定位到0,下端最大范围255,以后可以用getProperty取得它的_y属性设为RGB的值。
做个Graphic叫"刻度",大小是20X275,其实就是个长条中间加一竖线。
可以做调整器了,新建mc"调整器",把"刻度"拖入,左上角定位在(-10,-10)。再把"按钮"拖入,中心定位在(0,0)。
<二>主场景
现在进入主场景。用黑色画一个方块,按F8转成mc"colort",打开Instance面板,把主场景的这个实例命名为"color"。在它下面建一个动态文本(Dynamic Text),变量名(Variable)设为"colorstring",用来动态显示颜色值。
在主场景右边,拖进来三个"调整器",分别命名为"setred","setgreen"和"setblue",把它们三个选中,按Ctrl+K打开Align面板,排列整齐。在它们下面各建一个动态文本,变量名(Variable)分别设为"red","green"和"blue"。
在"setred"上点右键,选Action,写入如下内容:
onClipEvent (enterFrame) {
_root.red = int (getProperty ( _root.setred.button,_y ));
}
//取得"setred"中按钮的_y属性设为red的值
同理,"setgreen"和"setblue"的Action分别设为:
onClipEvent (enterFrame) {
_root.green = int (getProperty ( _root.setgreen.button,_y ));
}
和
onClipEvent (enterFrame) {
_root.blue = int (getProperty ( _root.setblue.button,_y ));
}
下面是"color"的Action,稍微麻烦点。
onClipEvent (enterFrame) {
//用enterFrame而不用Load是为了保证随时更新"color"的颜色
redstring = Number (_root.red).toString(16);
//把red从十进制数字转化为字符,toString里的16是指定用十六进制表示
if (length (redstring)<2) {
redstring = "0"+redstring;
}
//如果是一位数,在前面补0。
greenstring = Number (_root.green).toString(16);
if (length (greenstring)<2) {
greenstring = "0"+greenstring;
}
bluestring = Number (_root.blue).toString(16);
if (length (bluestring)<2) {
bluestring = "0"+bluestring;
}
_root.colorstring = redstring+greenstring+bluestring;
//把得到的R,G,B的值连起来就得到了颜色值
myColor = new Color(this);
//新建一个Color函数
myColor.setRGB(parseInt(_root.colorstring,16));
//parseInt函数把字符串转化为整数,后面的"16"是说明字符串是十六进制形式的
}
好,到此就算大功告成了。