Flash AS教程:填色游戏的制作
在本次课程中我们将学习使用 color 类来制作一个填色游戏,并通过本实例复习 for...in 及 sharedobject 的应用。
思路:
1.使用脚本代码创建一个调色盘,鼠标点击色块后进行取色;
2.绘制作为填充的影片剪辑并把每一部都存为影片剪辑。例如:填充对象是一个人物,那么要把他的头发,眼睛,脸等部分都保存成影片剪辑;
3.最后把各部分影片再统一保存到一个影片剪辑(mc)中;
4.为了保存和读取mc中各影片中的颜色,所以要加入两个按钮 save_btn 和 load_btn 。
步骤1:
绘制作为填充的影片剪辑并把每一部都存为影片剪辑;
最后把各部分影片统一保存到一个影片剪辑中,实例名mc;
绘制两个按钮实例名分别为 save_btn 和 load_btn 。
步骤2:
加入as代码:
//=====绘制一个正方形作为色块以备调用=====
_root.createemptymovieclip("box",-1);
varbox_size:number=12;
varthecol=0x0;
//用于存储所取的色彩值
with(box){
beginfill(thecol);
moveto(0,0);
lineto(box_size,0);
lineto(box_size,box_size);
lineto(0,box_size);
lineto(0,0);
endfill();
}
box._visible=false;
//============================================
//*************下面生成一个调色盘*************
varpanex:number=3;
varpaney:number=3;
varcolumn:number=18;
//起点x坐标为3,起点y坐标为3,总行数为18
vari=0;
for(varr=0;r<=0xff;r =0x33){
for(varg=0;g<=0xff;g =0x33){
for(varb=0;b<=0xff;b =0x33){
varp:movieclip=box.duplicatemovieclip("box" i,i);
newcolor(p).setrgb(r*256*256 g*256 b);
//newcolor(p).setrgb(r<<16|g<<8|b);
//rgb转换公式,以上两种都可以使用
p._x=panex math.floor(i/column)*(box_size 1);
p._y=paney i%column*(box_size 1);
//设置每个色块的坐标行坐标:[i/column],列坐标:i%column
p.onrelease=function(){
thecol=newcolor(this).getrgb();
newcolor(curser.bg).setrgb(thecol);
//点击到该色块后进行取色于保存到thecol变量中
};
i ;
}
}
}
//******************************************
//=====判断点击到图案上以后对哪个影片剪辑填色=====
mc.onrelease=function(){
varflag:boolean=true;
//增加一个flag为了避免一次对多个影片进行填色
for(varkinmc){
if(mc[k].hittest(_xmouse,_ymouse,true)&&flag){
newcolor(mc[k]).setrgb(thecol);
flag=false;
}
}
};
//============================================
//*************对mc中所有填充色的读取和保存*************
save_btn.onrelease=function(){
varso:sharedobject=sharedobject.getlocal("color_save");
for(varkinmc){
so.data[k]=newcolor(mc[k]).getrgb();
}
};
load_btn.onrelease=function(){
varso:sharedobject=sharedobject.getlocal("color_save");
for(varkinmc){
newcolor(mc[k]).setrgb(so.data[k]);
}
};
//******************************************
flash充电:例举 color 类中常用方法简介
请注意:我们在舞台中所绘制出的影片剪辑即使给他是填充了纯色影片,使用getrgb()也不会取得其rgb值。我们只有对其使用过setcolor()后,才能用getrgb()获取该影片的颜色值。
例1:为影片剪辑 mc 创建一个名为 m_col 的 color 对象,并将其rgb值设置为橙色:
var my_color:color = new color(my_mc);
my_color.setrgb(0xff9933);
例2:获取影片剪辑 mc 的rgb值并以16进制显示出来:
var m_col:color = new color(mc);
m_col.setrgb(0xff9933);
var myvalue:string= m_col.getrgb().tostring(16);