Posts Tagged ‘BitmapData’
效果在这里。图片被切割为8000个7 x 6 像素的粒子,用copyPixel的方式绘制到另一张BitmapData上。如果创建一系列alpha值0到255的bitmapData序列,作为copyPixel的参数,还可以实现透明渐变的效果。运动类使用了TweenNano。
关键部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| private function drawParticle():void {
//bmd作为画布的bitmapData
bmd.lock()
bmd.colorTransform(bmd.rect, ctm);
var op:Point = new Point();
for (var i:int = 0; i < w; i++) {
for (var j:int = 0; j < h; j++) {
//得到原图片相应位置的图块
op.x = i * bw;
op.y = j * bh;
//pArr为一个二维数组类,tp可看做一个Point,储存了当前图块应在的位置
var tp:SimpleParticle2D = pArr.get(i, j);
//从原图对应i,j的位置获得图块,复制到画布的新位置上
bmd.copyPixels(src, new Rectangle(op.x,op.y,bw,bh), new Point(tp.x, tp.y));
}
}
bmd.unlock();
} |
2009年11月16日
Experiment |
|
浏览 551
自从上次开始之后一直比较忙,没有深入做下去。只做到了一个足够项目应用的程度。演示看这里。

2009年07月31日
Experiment |
|
浏览 1,139
2009年05月15日
Experiment |
|
浏览 618
火焰只是基本的效果之一,柏林噪声+偏移滤镜,想像创造无限可能(很像广告语)。讲解请看这里。

2009年05月4日
Experiment |
|
浏览 2,526
也做了个最近流行的流体粒子(需要Flash10播放器)。30fps下运算十万个左右的简单粒子是毫无问题的。例子里我只创建了60000个粒子,为了不让800×350的BitmapData太消耗资源而影响流畅度。我在这里还发现了wonderfl上粒子的发展关系图,蛮有意思。

2009年04月20日
Experiment |
|
浏览 1,009
这个例子是比较典型的BitmapData效果。实现很简单,只要你了解最基本的思路。例子中的Matrix变形的算法比较实用:
1 2 3 4 5 6 7
| var transformMatrix:Matrix = new Matrix();
var incX:int = sw/40;
var incY:int = sh/40;
transformMatrix.a = (sw + incX)/sw;
transformMatrix.d = (sh + incY)/sh;
transformMatrix.tx = -incX/2;
transformMatrix.ty = -incY/2; |
sw和sh是对象的宽和高,使对象可以沿中心点等比缩放。整个例子的讲解和源代码在这里。

2009年03月23日
Experiment |
|
浏览 2,746
这里是一个简单的BitmapData粒子效果演示。40000个粒子的自由落体。感兴趣的同学可以下载源代码。
本例主要展示了BitmapData粒子效果的最基本的三个步骤:粒子计算,BitmapData操作,BitmapData特效操作。BitmapData操作和BitmapData特效操作也是做其他位图效果必须的。粒子计算是独立的一块,并且是可以很很很深入的一块。为方便粒子计算,源码里我提供了一个最简单的二维粒子类,可以通过xy轴的坐标和速度,以及质量来做基本的物理运动计算。

2009年03月20日
Experiment |
|
浏览 2,402
用像素来做粒子,得益于BitmapData的快速渲染,三万个粒子也一样流畅。
演示 细节讲解

2009年03月19日
Experiment |
|
浏览 3,252
把上次的粒子效果做了一个改进版。显示都通过BitmapData操作,粒子的景深和透视变化预先做了100个BitmapData“缓存”。空间运动和排序的计算跟之前没有变化。最近刚刚在公司内部做完了BitmapData相关的培训,以后我会整理一下发到网上来。我在这里分享了本例的思路。

2009年03月18日
Experiment |
|
浏览 964