今天把这个帖子编辑一下吧。还是老样子,我先稍微讲讲什么叫做Accumulate Buffer以及如何用Flash实现这个东西并且达到效果。
一 . 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那一段补充为:
好啦,我们的第一步完成啦,Ctrl+Enter测试,我们已经可以看到一个MovieClip被连续画到一个AccumulateBuffer上的样子了。恩...只是不怎么好看,下面是完成了第一步的源文件: step1.rarimport 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上。
}
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
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |