flash素材、flash片头、flash特效、flash源码,flash相册等flash资源都是本站的重要flash素材请大家支持新丁flash素材网!
首页 | 片头欣赏 | Banner 欣赏 | Flash 特效 | 网站欣赏 | 黄色笑话 | 技术文档 | 视频教程 | 网页模板 | flash小游戏 | 源码下载 | 相关下载 | 声音下载 |
flash Action应用 您当前的位置是:首页 >> 技术文档 >> flash Action应用 >> 详细内容
不到40行代码的flash填色游戏
加入时间:2007-9-30 浏览:32 录入:启能Flash资源网 来源:网络
今天一个朋友问我怎么做花纹填充上色,就花点时间给他做了一个。
思路是利用beginBitmapFill画矩形,然后用待填充的图形做mask。
舞台上有两个mc,一个是colors,一个是canvas,另外还有一个描边图形
colors负责选色,canvas里面是多个分离的图形,也就是待填充mc(无需取名)

看一下代码:
//先是定义一个画矩形函数
import flash.display.BitmapData;
import flash.geom.*;
function createRectangle(x:Number, y:Number, w:Number, h:Number, mc:MovieClip) {
        mc.moveTo(x, y);
        mc.lineTo(x+w, y);
        mc.lineTo(x+w, y+h);
        mc.lineTo(x, y+h);
        mc.lineTo(x, y);
        mc.endFill();
}
//然后对canvas的每个mc写onRelease响应
for (i in canvas) {
        if (typeof (canvas[i]) == "movieclip") {
                if (canvas[i].type != "rect") {
                        canvas[i].onRelease = function() {
                                                                                    //如果已经被上色了,就会有一个与之绑定的_mc,再次上色之前,要把这个link_mc删掉
                                if (this.link_mc._name) {
                                        this.link_mc._bmp.dispose();
                                        this.link_mc.removeMovieClip();
                                }
                                                                                     //根据_mc的位置和大小,画一个匹配的矩形,然后进行类型和链接的设置
                                var rect_mc:MovieClip = canvas.createEmptyMovieClip("rect"+canvas.getNextHighestDepth(), canvas.getNextHighestDepth());
                                rect_mc.type = "rect";
                                this.link_mc = rect_mc;
                                rect_mc.bmp = new BitmapData(20, 20, false, 0xFF0000);
                                rect_mc.bmp.draw(select_color_mc);
                                rect_mc.beginBitmapFill(rect_mc.bmp);
                                var r:Object = this.getBounds(canvas);
                                createRectangle(r.xMin, r.yMin, r.xMax-r.xMin, r.yMax-r.yMin, rect_mc);
                                                                                     //最后做一个mask,这样就达到了上色的效果
                                rect_mc.setMask(this);
                        };
                }
        }
}
//对颜色拾取器进行onRelease设定
for (i in colors) {
        if (typeof (colors[i]) == "movieclip") {
                colors[i].onRelease = function() {
                        select_color_mc=this
                };
        }
}
是不是很简单,这就是BitmapData的强大功效啦!
关于我们 | 联系方式 | 广告赞助 | 免责声明 | 站点留言 | 友情链接 | 推荐站点
Copyright 2007-2008 新丁flash资源(flash素材)网 All Rights Reserved
新丁flash资源(flash素材)网 保留所有权利 未经许可请勿任意转载或复制使用 
请使用1024*768分辨率浏览本站以达到浏览新丁flash资源(flash素材)网的最佳视觉效果
新丁flash资源(flash素材)网中所有的解压密码均为:www.qnflash.com
粤ICP备08010396号