主题:  我的教程四--setColor

5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:585
#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"是说明字符串是十六进制形式的
}

好,到此就算大功告成了。



网络白痴 | 5D荣誉斑竹

职务:普通成员
等级:4
金币:10.0
发贴:1657
#22001/5/18 8:45:45
把演示文件及源文件链一个吧,看看和我的东东是不是一样!不过可能我的相对你的比较复杂些更!



5D宽带&流技术版主

职务:版主
等级:4
金币:10.0
发贴:1874
#32001/5/18 9:20:32
顶楼的兄弟够意思,这么快将教程贴出来了.
鼓掌!
哗哗桦哗哗.......



闪客作家

职务:普通成员
等级:1
金币:10.0
发贴:275
#42001/5/18 12:28:50
为什么有时候可以双引号内为空,startDrag ("", false, 0, 0, 0, 255);
这样FLASH也能试别?
也就是调用自己吗?



Blackflash.Qi

职务:版主
等级:7
金币:17.0
发贴:6028
#52001/5/18 15:30:48
谢谢!


你可以把这个帖到相应的那个SWF文件里



5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:585
#62001/5/19 12:34:41
爱老虎油,是不是"I love you"?


双引号内为空,就是调用自己,相当于"this"