当前位置: 首页 > 图文教程 > Flash动画 > ActionScript > Flash AS教程:填色游戏的制作

ActionScript
FLASH 3D相册之利用BitmapData类制作
Flash 脚本游戏开发教程 第一课
Flash 脚本游戏开发教程第二课
Flash 脚本游戏开发教程第三课
Flash 脚本游戏开发教程第四课
Flash 脚本游戏开发教程第五课
Flash 脚本游戏开发教程第六课
Flash 脚本游戏开发教程第七课
Flash 脚本游戏开发教程第八课
Flash AS实现的蝌蚪摆尾动画的教程
从基础开始深入学Flash AS3教程(4)(译文)
从基础开始深入学Flash AS3教程(5)(译文)
从基础开始深入Flash AS3教程(2)(译文)
从基础开始深入学Flash AS3教程(3)(译文)
Flash AS3对单个图片进行角色动作化处理
从基础开始深入Flash AS3教程(1)(译文)
Flash教程:if条件语句的用法
Flash AS教程:_visible属性的详细讲解
Flash AS教程:图片环绕旋转效
Flash教程:trace()的使用

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-16   浏览: 61 ::
收藏到网摘: n/a

先试试效果:


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