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