论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

[原创]使用BitmapData作为Accumulate Buffer使用

文章类别:Flash | 发表日期:2008-9-21 19:51:51

  

今天把这个帖子编辑一下吧。还是老样子,我先稍微讲讲什么叫做Accumulate Buffer以及如何用Flash实现这个东西并且达到效果。
/UploadTeach/200705/20070529151550194.swf

一 . Accumulate Buffer: 其实是在图形处理中用的非常多的一中缓存,它负责将帧渲染之后进行保存,并在以后的处理中反复使用。它可以实现诸如 motion blur(动态模糊)、anti-alias(抗锯齿)等很玄的效果。这个介绍构简单吧。

二. 切入正题,咱们用Flash 8.0来模拟Accumulate Buffer来实现一下很帅的blur效果吧,最后效果看上去可以像media player里面的视觉效果一样哦!下面跟着我做。

1. 新建一个Flash文档,随便起个名字。
2. 在舞台上面随便做一个会动的MovieClip,最好简单点,我们就可以继续了,这里我用了几个简单的补间做了一个运动的棍子。
3. 回到最外层,给这个movieClip起名stick,然后新建一层,在新建的层的第一帧写入actionScript,  stick._visible=false;  因为我们不想让球直接渲染到画面而是让他进入Accumulate Buffer,完成之后因该是这个样子 [step1]
4. ctr+enter,测试一下,我们应该看不到那只球。好,然后在ball._visible=false;下面开始我们的正文。
图片附件: [scr1] step1.JPG

5. 在ball._visible=false那一段补充为:

import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.*;

stick._visible=false;
var accumulateBuffer = new BitmapData(550,400,false,0xff000000);//使用这些参数创建一个BitmapData对象
attachBitmap(accumulateBuffer,1);//将accumulateBuffer放到舞台上,不然我们怎么能够看到效果呢

function onEnterFrame(){
accumulateBuffer.draw(stick);//每到一帧将目标movieClip画到accumulateBuffer上。
}
好啦,我们的第一步完成啦,Ctrl+Enter测试,我们已经可以看到一个MovieClip被连续画到一个AccumulateBuffer上的样子了。恩...只是不怎么好看,下面是完成了第一步的源文件:  step1.rar
      有了基础,下面我们拿AccumulateBuffer来一展身手!!我们来实现一个让画面渐渐模糊的效果。将那段ActionScript加入四行改变为:
import flash.display.BitmapData;
import flash.geom.*;
import flash.filters.*;
stick._visible=false;
var accumulateBuffer = new BitmapData(550,400,false,0xff000000);
var tempBuffer = new BitmapData(550,400,false,0xff000000); //创建另一个BitmapData用作模糊处理的缓存
var blurFilter = new BlurFilter(2,2,1); //建立一个让图面模糊的滤镜
attachBitmap(accumulateBuffer,1);
function onEnterFrame(){
tempBuffer.draw(accumulateBuffer);//将AccumulateBuffer画到tmpBuffer上预备进行模糊处理
accumulateBuffer.applyFilter(tempBuffer,tempBuffer.rectangle,new Point(),blurFilter);//将模糊处理后的图象写回accumulatBuffer
accumulateBuffer.draw(stick);
}

完成这些工作后的源文件: step2.rar 

      好啦,大家测试一下,是不是有种延误飘散的感觉了阿?其实AccumulateBuffer还有很多用法,这里就不一一例举了。下面是我做的一些使用BitmapData做AccumulateBuffer的效果。
图片附件: [使用ac buffer执行外部MC] screen_ac.JPG

附件: [Source File]  guRu_AC.rar 

视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058