设计中国
新闻教程设计招聘下载培训图书会员博客社区
热门文章
·沙漠之鹰手枪画法的教程
·Flash动画特效制作技巧:...
·解决Flash影片中的图片抖...
·Flash特效制作常用的源代...
·Flash中人物180°转身动...
·画线实现蜘蛛丝的动态更新
·Flash游戏教程:控制物体...
·浅释Flash ActionScript代...
·新鲜玩法 Flash动画也可用...
·flash8滤镜代码提示的小窍...

文章搜索

教程推荐





论坛精华
·国外优秀CorelDRAW作品欣...
·《描点大法》升级版
·CD功能之1——POWERCLIP
·各位盟友请将PS大赛作品望...
·NO.2号MM制作过程
·叶子,问个问题?
·FH制作荷花。(简易)
·兔子--再现
·海底世界制作教程
·我的第一副手绘作品,大家...
·很久没来,贴图一张
·翻译了一篇头发教程
·新作一幅!沌鼠标手绘!!!
·Adobe Illustrator 10 发...
·这是我学习ps以来的第一幅...

FLASH AS实现马赛克效果

作者:mirycat     日期:2006-04-18 12:06     点击:
字体大小:      


   

      一般实现马赛克有 2 种办法, 采用的都是遍历图像上的像素, 对相隔一定范围内的像素填充同一颜色, 只不过采样的颜色位置不同, 有选中心点的, 也有选范围内全部像素平均值的, 考虑到 flash 的效率问题, 这个是选择中心点的, 可以省掉大量循环

      同时注意 stride 要 4 的倍数, 不然的话.. 自己看吧. 哈哈(月光注:其实用2的倍数也就可以了)

import flash.display.BitmapData;
// 场景中摆个叫 img 的 mc 就 ok
var oldBmp:BitmapData = new BitmapData(img._width, img._height);
oldBmp.draw(img);
var newBmp:BitmapData = mosaic(oldBmp, 12);
var mc = createEmptyMovieClip("mc", 1);
mc.attachBitmap(newBmp, getNextHightestDepth());
mc._x = img._width;
function mosaic(bmp:BitmapData, stride:Number):BitmapData {
 var startTime = getTimer();
 
 var newBmp:BitmapData = new BitmapData(bmp.width, bmp.height);
 var w = bmp.width / stride + 1;
 var h = bmp.height / stride + 1;
 var edgeW = bmp.width % stride; // 边缘不足 stride 的部分
 var edgeH = bmp.height % stride;
 var centerW = (stride-1)/2; // 第一格的中心点
 var centerH = centerY; // 第一格永远是方的
 var tmpX, tmpY; // 循环中的真实像素位置, 前面 w, h 被除过了..
 var blockW, blockH; // 马赛克的格子
 
 var i = -1;
 while (++i < w) {
  tmpX = i * stride;
  if (i == w - 1){
   blockW = edgeW;
  } else {
   blockW = stride;
  }
  centerW = (blockW - 1) / 2;
  var j = -1;
  while (++j < h) {
   tmpY = j * stride;
   if (i == h - 1){
    blockH = edgeH;
   } else {
    blockH = stride;
   }
   centerH = (blockH - 1) / 2;
   var color = bmp.getPixel(tmpX + centerW, tmpY + centerH);
   var m = -1;
   while (++m < blockW) {
    var n = -1
    while (++n < blockH) {
     newBmp.setPixel(tmpX + m, tmpY + n,color);
    }
   }
  }
  
 }
 trace("Cost : "+(getTimer()-startTime));
 return newBmp;
}

以上代码请用FLASH8编译执行.

下载FLA文件
下载SWF文件

来源:蓝色理想


相关文章

·Flash特效制作常用的源代码大放送 ·浅释Flash ActionScript代码优化原则
·浅释ActionScript的代码优化 ·新鲜玩法 Flash动画也可用电视观看
·Flash动画特效制作技巧:文字炸开效果 ·Flash ActionScript 3 新特性与变化
·一个模仿Acdsee浏览图片的效果 ·flash8滤镜代码提示的小窍门
·Freehand和Flash的结合应用 ·FLASH菜单链接动态管理

其他文章



发表评论: 匿名发表 用户名:    查看评论

验证码:
· 您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
· 留言板管理人员有权保留或删除其管辖留言中的任意内容
· 本站提醒:不要进行人身攻击。谢谢配合。


网站介绍  |  广告业务  |  设计业务  |  免责声明  |  版权声明  |  联系我们

华人设计门户  |  © 2000-2005 设计中国 版权所有