在flash8之前的填色游戏一般是将要填色的物件分成若干个小的MovieClip,然后单独对其填充颜色。
利用BitmapData.floodFill对位图对象填充颜色的特性来实现区域填色,似乎比较方便,只要将线稿导入到flash中,变成BitmapData就可以填色了。下面是一个实例
importflash.display.BitmapData;
varcolorNumber:Number=15;//色块数量
varnowColor:Number;//记录当前颜色
varshowNowColor:Color=newColor(this.attachMovie("block","showNowColorMc",100,{_x:460,_y:330,_width:50,_height:50}));//生成一个色块显示当前颜色
for(vari:Number=0;i
this.attachMovie("block","block"+i,i+10,{_x:(i*30+10),_y:350});
vartmpMc:MovieClip=eval("block"+i);
vartmpColorMc:Color=newColor(tmpMc);
vartmpColor:Number=random(0xffffff);//随机颜色
tmpMc.thisColor=tmpColor;
tmpColorMc.setRGB(tmpColor);
showNowColor.setRGB(tmpColor);
nowColor=tmpColor;
tmpMc.onRelease=function(){
nowColor=this.thisColor;
showNowColor.setRGB(nowColor);
}
}
varmyBitmapData:BitmapData=BitmapData.loadBitmap("fillpic");//创建一个位图对象
varmc:MovieClip=this.createEmptyMovieClip("mc",1);
mc.attachBitmap(myBitmapData,2);//载入位图对象
mc.onRelease=function(){//点击设置颜色
myBitmapData.floodFill(this._xmouse,this._ymouse,nowColor);//为当前位置(同一颜色的连续区域,这里是白色)填充颜色
//floodFill在图像上执行倾倒填充操作,从(x,y)坐标开始,填充一种特定的颜色。
}
把该实例扩展下,可以做成下面的效果