Flash8技巧:用BitmapData.floodFill做填色游戏

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在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<colorNumber;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) 坐标开始,填充一种特定的颜色。

}

把该实例扩展下,可以做成下面的效果

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航