欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flash AS教程:填色游戏的制作

程序员文章站 2023-10-17 18:47:20
先试试效果: 在本次课程中我们将学习使用 Color 类来制作一个填色游戏,并通过本实例复习 fo... 08-10-06...
先试试效果:


在本次课程中我们将学习使用 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);