flash位图技术研究篇(7):像素粒子
2010-03-08 10:35
369 查看
在wonderfl 网站当中,有很多创意的flash 程序,呈现的视角效果能够给予很高的启发性。今天,又要继续学习flash 技术,把在哪里看到的东西记录一下,这种位图应用可以变化出很多神奇的效果。一个像素可以当作一个微小的粒子处理,我们可以采用设置像素点位置的方式,对空白的位图数据进行设置点,这些点会分布在位图上,呈现出色彩奔放的效果。
接下来,记录一下在哪里看到的程序。大部分过程都来源于哪里。仅仅改造了一些。提到粒子,我想到一个粒子模型,这个粒子模型是一个结构,暂时没有办法可以总结他出来,只是隐约有这样想法,粒子模型当中,可以包含坐标,角度,颜色值。等等设置。其他参数如下面。
这个模型当中,我们会记录他的位置,颜色,和角度。这样一来,我们把他作为一个对象那样进行创建。
我们需要随机创建每一个像素粒子。如下
设置他的角度,颜色 还是一些初始参数,这样下来我们借用setPixel(x,y,color);这个函数来设置每一个点了。看起来非常简单,用起来也很简单。但是有一点是,通过借鉴他的一种做法,我们了解到这些方法应用变化。
粒子创建完成,采用数组进行保存。进行动画过程。采用圆的分布方式设置动画,或者其他方式设置,这样的方式可以自由搭配。而这次我们则采用圆的方式进行。向中心散发。同样,在借鉴这个程序的时候,结合滤镜的应用,产生很多不错效果。看起来很酷。如下图:
代码清单:
小结:
这一篇文章,不足以说明位图结合效果的全部,在woderfl 网站里面包含很多有趣创意的程序,如果你是有心的flash 爱好者,一定不要错过那里。会学到很多知识,增加自己的见识。个人而言,会继续去学习那里的技巧。
接下来,记录一下在哪里看到的程序。大部分过程都来源于哪里。仅仅改造了一些。提到粒子,我想到一个粒子模型,这个粒子模型是一个结构,暂时没有办法可以总结他出来,只是隐约有这样想法,粒子模型当中,可以包含坐标,角度,颜色值。等等设置。其他参数如下面。
//简单的粒子模型 internal class Particle { public var x:Number; public var y:Number; public var radius:Number=0;//半径 public var color:uint;//颜色 public var vr:Number; public var angle:Number; public function Particle() { } }
这个模型当中,我们会记录他的位置,颜色,和角度。这样一来,我们把他作为一个对象那样进行创建。
我们需要随机创建每一个像素粒子。如下
private function creatSprite():void { //创建多个像素点 for (var i:int=0; i<300; i++) { var p:Particle=new Particle(); p.vr=Math.random()*45; p.color=0xffffff; p.angle=Math.random()*2*Math.PI; particles.push(p); } }
设置他的角度,颜色 还是一些初始参数,这样下来我们借用setPixel(x,y,color);这个函数来设置每一个点了。看起来非常简单,用起来也很简单。但是有一点是,通过借鉴他的一种做法,我们了解到这些方法应用变化。
粒子创建完成,采用数组进行保存。进行动画过程。采用圆的分布方式设置动画,或者其他方式设置,这样的方式可以自由搭配。而这次我们则采用圆的方式进行。向中心散发。同样,在借鉴这个程序的时候,结合滤镜的应用,产生很多不错效果。看起来很酷。如下图:
代码清单:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.PixelSnapping;
import flash.display.BlendMode;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;
public class Main extends Sprite
{
private var bmp:BitmapData=new BitmapData(550,400,false,0x000000);
private var particles:Array=[];//粒子数组
private var startX:Number;
private var startY:Number;
//private var pen:BitmapData=new BitmapData(1,1);
public function Main()
{
init();
}
private function init():void
{
var bitmap:Bitmap=addChild(new Bitmap(bmp)) as Bitmap;
bitmap.blendMode=BlendMode.ADD;
addEventListener(Event.ENTER_FRAME,Run);
stage.addEventListener(MouseEvent.CLICK,onClick);
}
private function Run(event:Event):void
{
update();
}
private function onClick(event:MouseEvent):void
{
startX=mouseX;
startY=mouseY;
creatSprite();
}
//创建图形
private function creatSprite():void
{
//创建多个像素点
while(particles.length>0)particles.pop();
for (var i:int=0; i<1000; i++)
{
var p:Particle=new Particle();
p.vr=Math.random()*45;
p.color=0xffffff;
p.angle=Math.random()*2*Math.PI;
particles.push(p);
}
}
private function update():void
{ bmp.lock();
bmp.applyFilter(bmp,new Rectangle(0,0,stage.stageWidth,stage.stage.stageHeight),new Point(),new BlurFilter(2,2));
for(var i:int=0;i<particles.length;i++)
{
var p:Particle=particles[i];
p.vr*=0.8;
p.radius+=p.vr;//递增他的半径
p.x=startX+p.radius*Math.cos(p.angle);//按圆进行分布x坐标
p.y=startY+p.radius*Math.sin(p.angle);//按圆的方式分布y坐标
bmp.setPixel(p.x,p.y,p.color);//设置像素点的位置
}
bmp.unlock();
//pen.draw(bmp,new Matrix(0.25,0,0,0.25));
}
}
}
//简单的粒子模型 internal class Particle { public var x:Number; public var y:Number; public var radius:Number=0;//半径 public var color:uint;//颜色 public var vr:Number; public var angle:Number; public function Particle() { } }
小结:
这一篇文章,不足以说明位图结合效果的全部,在woderfl 网站里面包含很多有趣创意的程序,如果你是有心的flash 爱好者,一定不要错过那里。会学到很多知识,增加自己的见识。个人而言,会继续去学习那里的技巧。
相关文章推荐
- flash位图技术研究篇(7):像素粒子
- flash位图技术研究篇(7):像素粒子1
- flash位图技术研究篇(7):像素粒子(2)
- flash位图技术研究篇(7):像素粒子2
- flash位图技术研究篇(7):像素粒子(2)
- flash位图技术研究篇(5):像素画
- flash位图技术研究篇(5):像素画
- Flash位图技术研究篇:扫描像素点
- flash位图技术研究篇(8):扫描像素点
- flash位图技术研究篇(8):扫描像素点
- flash位图技术研究篇(8):扫描像素点
- flash位图技术研究篇(5):像素画
- flash位图技术研究篇(1):缓冲技术
- flash位图技术研究篇(2):渲染缓冲区
- flash位图技术研究篇(4): flash舞台屏幕录制
- flash位图技术研究篇(6):黑白画
- flash位图技术研究篇(1):缓冲技术
- flash位图技术研究篇(6):黑白画
- flash位图技术研究篇(1):缓冲技术
- flash位图技术研究篇(2):渲染缓冲区