As3.0中的位图(Bitmap/BitmapData)编程

来源:互联网 发布:c函数返回字符串数组 编辑:程序博客网 时间:2024/05/01 20:43

As3.0中的位图(Bitmap/BitmapData)编程功能十分丰富,下面这些是官方文档上的基本示例:

1.位图使用(模糊)滤镜

[java] view plaincopy
  1. //创建一个矩形区域的BitmapData  
  2. var bmd:BitmapData = new BitmapData(8030false0xefefef);  
  3.    
  4. //画个红色的矩形  
  5. var rect:Rectangle = new Rectangle(20104010);  
  6. bmd.fillRect(rect, 0xFF0000);  
  7.    
  8. //找到红色矩形的右上顶点  
  9. var pt:Point = new Point(rect.left, rect.top);  
  10.    
  11. //定义一个模糊滤镜  
  12. var filter:BlurFilter = new BlurFilter(8,8,1);  
  13.    
  14. //应用滤镜  
  15. bmd.applyFilter(bmd, rect, pt, filter);  
  16.    
  17. //创建一个位图对象,并加入到舞台  
  18. var bm:Bitmap = new Bitmap(bmd);  
  19.    
  20. bm.scaleX = bm.scaleY = 2.0;  
  21. bm.x = stage.stageWidth/2 -bm.width/2;  
  22. bm.y = stage.stageHeight/2 - bm.height/2 ;  
  23.    
  24. addChild(bm);  

2.像素拷贝及赋值

[java] view plaincopy
  1. var bmd1:BitmapData = new BitmapData(9060false0x00000000);  
  2. var bmd2:BitmapData = bmd1.clone();//拷贝  
  3.    
  4. //"画"一条白色的线  
  5. for(var i:uint=10;i<=40;i++){  
  6.     bmd1.setPixel32(i, i, 0xFFFFFFFF);  
  7. }  
  8.    
  9. trace(bmd1.getPixel32(1010).toString(16)); // ffffffff  
  10. trace(bmd2.getPixel32(1010).toString(16)); // ff000000  
  11.    
  12. var bm1:Bitmap = new Bitmap(bmd1);  
  13. this.addChild(bm1);  
  14. bm1.x =bm1.y = 5;  
  15.    
  16. var bm2:Bitmap = new Bitmap(bmd2);  
  17. bm2.x = 105;  
  18. bm2.y =5;  
  19. this.addChild(bm2);  

3.颜色变换

[java] view plaincopy
  1. var bmd:BitmapData = new BitmapData(8030false0xFF0000);  
  2.    
  3. var cTransform:ColorTransform = new ColorTransform();  
  4. cTransform.alphaMultiplier = 0.8;//设置透明度因子为0.8  
  5. var rect:Rectangle = new Rectangle(004030);//定义左半边矩形区域  
  6. bmd.colorTransform(rect, cTransform);//对rect区域应用colorTransform  
  7.    
  8. var bm:Bitmap = new Bitmap(bmd);  
  9. addChild(bm);  
  10.    
  11. bm.x = stage.stageWidth/2 - bm.width/2;  
  12. bm.y = stage.stageHeight/2 - bm.height/2;  

4.比较位图差异
[java] view plaincopy
  1. var bmd1:BitmapData = new BitmapData(5050true0xFFFFAA00);  
  2. var bmd2:BitmapData = new BitmapData(5050true0xCCFFAA00);  
  3. var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));  
  4. var diffValue:String = diffBmpData.getPixel32(11).toString(16);  
  5. //解释:当二个位置尺寸大小相同,且仅alpha分量不同时,compare的值为 zzFFFFFF,其中zz为bmd1与bmd2的alpha分量差  
  6. trace (diffValue); // 33ffffff  
  7.    
  8. var bm1:Bitmap = new Bitmap(bmd1);  
  9. addChild(bm1);  
  10. bm1.x = bm1.y = 5;  
  11. var bm2:Bitmap = new Bitmap(bmd2);  
  12. addChild(bm2);  
  13. bm2.x = 60;  
  14. bm2.y = 5;  
  15.    
  16. var bmDiff = new Bitmap(diffBmpData);  
  17. addChild(bmDiff);  
  18. bmDiff.x = 115;  
  19. bmDiff.y = 5;  

[java] view plaincopy
  1. var bmd1:BitmapData = new BitmapData(5050true0xFF00FF99);  
  2. var bmd2:BitmapData = new BitmapData(5050true0x99AA3366);  
  3. var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));  
  4. var diffValue:String = diffBmpData.getPixel32(11).toString(16);  
  5. //解释:当二个位置尺寸大小相同,但RGB分量不同时,compare的值为 FFxxyyzz,其中xx,yy,zz分别为bm1与bm2的RGB分量差,同时alpha分量差将被忽略  
  6. trace (diffValue); // ff56cc33  
  7.    
  8. var bm1:Bitmap = new Bitmap(bmd1);  
  9. addChild(bm1);  
  10. bm1.x = bm1.y = 5;  
  11. var bm2:Bitmap = new Bitmap(bmd2);  
  12. addChild(bm2);  
  13. bm2.x = 60;  
  14. bm2.y = 5;  
  15.    
  16. var bmDiff = new Bitmap(diffBmpData);  
  17. addChild(bmDiff);  
  18. bmDiff.x = 115;  
  19. bmDiff.y = 5;  

5.拷贝颜色通道

[java] view plaincopy
  1. var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false0x00FF0000);  
  2.    
  3. var rect:Rectangle = new Rectangle(002040);  
  4. var pt:Point = new Point(1010);  
  5. bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);//将红色通道复制到以(10,10)为顶点,宽为20,高为40的矩形区域的蓝色通道中  
  6.    
  7. trace(bmd.getPixel32(10,10).toString(16));//ffff00ff,即矩形区域的最终颜色值为ff ff 00 ff(纯红 叠加 纯蓝)  
  8.    
  9. var bm:Bitmap = new Bitmap(bmd);  
  10. this.addChild(bm);  

6.截取位图的某一部分(像素)

[java] view plaincopy
  1. var bmd1:BitmapData = new BitmapData(4040false0x000000FF);  
  2. var bmd2:BitmapData = new BitmapData(8040false0x0000CC44);  
  3.    
  4. var rect:Rectangle = new Rectangle(002020);  
  5. var pt:Point = new Point(1010);  
  6. bmd2.copyPixels(bmd1, rect, pt);//将bmd1中以pt为左上顶点的rect矩形像素复制到bmd2中  
  7.    
  8. var bm1:Bitmap = new Bitmap(bmd1);  
  9. this.addChild(bm1);  
  10. var bm2:Bitmap = new Bitmap(bmd2);  
  11. this.addChild(bm2);  
  12. bm2.x = 50;  

7.将文本转换为位图

[java] view plaincopy
  1. import flash.display.Bitmap;  
  2. import flash.display.BitmapData;  
  3. import flash.text.TextField;  
  4.    
  5. var tf:TextField = new TextField();  
  6. tf.text = "bitmap text";  
  7.    
  8. var myBitmapData:BitmapData = new BitmapData(8020);  
  9. myBitmapData.draw(tf);  
  10. var bmp:Bitmap = new Bitmap(myBitmapData);  
  11. this.addChild(bmp);  
  12. bmp.x = stage.stageWidth/2 - bmp.width/2;  
  13. bmp.y = stage.stageHeight/2 - bmp.height/2;  

8.仿PS中的颜色填充工具

[java] view plaincopy
  1. //准备一个40*40绿色背景的BitmapData  
  2. var myBitmapData:BitmapData = new BitmapData(4040false0x0000FF00);  
  3.    
  4. //画二个有“交叉重叠”部分的“蓝色”矩形  
  5. var rect:Rectangle = new Rectangle(002525);  
  6. myBitmapData.fillRect(rect, 0x000000FF);  
  7. rect = new Rectangle(20202020);  
  8. myBitmapData.fillRect(rect, 0x000000FF);  
  9.    
  10. //从坐标(10,10)开始寻找与(10,10)坐标(像素点相同且连续的区域)填充红色  
  11. myBitmapData.floodFill(10100x00FF0000);  
  12.    
  13. var bm:Bitmap = new Bitmap(myBitmapData);  
  14. addChild(bm);  
  15.    
  16. bm.scaleX  = bm.scaleY = 3.0;  
  17. bm.x = stage.stageWidth/2 - bm.width/2;  
  18. bm.y = stage.stageHeight/2 - bm.height/2;  

9.颜色融合

[java] view plaincopy
  1. import flash.display.Bitmap;  
  2. import flash.display.BitmapData;  
  3. import flash.geom.Rectangle;  
  4. import flash.geom.Point;  
  5.    
  6. var bmd1:BitmapData = new BitmapData(10080true0xFF00FF00);  
  7. var bmd2:BitmapData = new BitmapData(10080true0xFFFF0000);  
  8. var rect:Rectangle = new Rectangle(004040);  
  9. var pt:Point = new Point(2020);  
  10. var mult:uint = 0x80// 50% ,各通道值均为128,即50%  
  11. bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);  
  12.    
  13. var bm1:Bitmap = new Bitmap(bmd1);  
  14. addChild(bm1);  
  15. var bm2:Bitmap = new Bitmap(bmd2);  
  16. addChild(bm2);  
  17. bm2.x = 110;  
  18.    
  19. //最终值  
  20. //new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;  
  21. trace(bmd1.getPixel32(20,20).toString(16)); //ff7f7f00  
  22.    
  23. //解释:  
  24. //返回值中Red分量为 7f = 0x00 * 0x80 + 0xff*(0x100-0x80)/0x100  

10.噪点图

[java] view plaincopy
  1. var bmd1:BitmapData = new BitmapData(8080);  
  2. var bmd2:BitmapData = new BitmapData(8080);  
  3.    
  4. var seed:int = int(Math.random() * int.MAX_VALUE);  
  5. bmd1.noise(seed, 00xFF, BitmapDataChannel.RED, false);  
  6. bmd2.noise(seed, 00xFF, BitmapDataChannel.RED, true);  
  7.    
  8. var bm1:Bitmap = new Bitmap(bmd1);  
  9. this.addChild(bm1);  
  10. bm1.x = 10;  
  11. bm1.y = 10;  
  12. var bm2:Bitmap = new Bitmap(bmd2);  
  13. this.addChild(bm2);  
  14. bm2.x = 100;  
  15. bm2.y = 10;  
  16.    
  17.    
  18. stage.addEventListener(Event.ENTER_FRAME,enterFrameHandler);  
  19.    
  20. function enterFrameHandler(e:Event):void{  
  21.     seed = Math.floor(Math.random() * int.MAX_VALUE);  
  22.     bmd1.noise(seed, 00xFF, BitmapDataChannel.RED, false);  
  23.     bmd2.noise(seed, 00xFF, BitmapDataChannel.RED, true);  
  24.     bm1.bitmapData = bmd1;  
  25.     bm2.bitmapData = bmd2;  
  26. }  

11.另一种噪点图(有点类似卫星云图)

[java] view plaincopy
  1. import flash.display.Bitmap;  
  2. import flash.display.BitmapData;  
  3.    
  4. var bmd:BitmapData = new BitmapData(200200false0x00CCCCCC);  
  5.    
  6. var seed:Number = Math.floor(Math.random() * 999999);  
  7. var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE;  
  8. bmd.perlinNoise(100806, seed, falsetrue, channels, falsenull);  
  9.    
  10. var bm:Bitmap = new Bitmap(bmd);  
  11. addChild(bm);  
  12. bm.x = stage.stageWidth/2 - bm.width/2;  
  13. bm.y = stage.stageHeight/2 - bm.height/2;  
  14.    
  15. stage.addEventListener(Event.ENTER_FRAME,enterFrameHandler);  
  16.    
  17. function enterFrameHandler(e:Event):void{  
  18.     seed = Math.floor(Math.random() * 999999);  
  19.     bmd.perlinNoise(100806, seed, falsetrue, channels, falsenull);  
  20.     bm.bitmapData = bmd;      
  21. }  

12.像素融解

[java] view plaincopy
  1. import flash.display.BitmapData;  
  2. import flash.display.Bitmap;  
  3. import flash.geom.Point;  
  4. import flash.geom.Rectangle;  
  5. import flash.utils.Timer;  
  6. import flash.events.TimerEvent;  
  7.    
  8. var rndColor:int = Math.random() * 0xffffffff;//随机背景色  
  9. var fillColor:int = Math.random() * 0xffffffff;//随机填充色  
  10.    
  11. var bmd:BitmapData = new BitmapData(100100false, rndColor);  
  12. var bitmap:Bitmap = new Bitmap(bmd);  
  13. addChild(bitmap);  
  14.    
  15. bitmap.scaleX = bitmap.scaleY = 1.5;  
  16. bitmap.x = stage.stageWidth/2 - bitmap.width/2;  
  17. bitmap.y = stage.stageHeight/2 - bitmap.height/2;  
  18.    
  19. var tim:Timer = new Timer(20);  
  20. tim.start();  
  21. tim.addEventListener(TimerEvent.TIMER, timerHandler);  
  22.     
  23. function timerHandler(event:TimerEvent):void {  
  24.     var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);  
  25.     dissolve(randomNum);  
  26. }  
  27.    
  28. function dissolve(randomNum:Number):void {  
  29.     var rect:Rectangle = bmd.rect;  
  30.     var pt:Point = new Point(00);  
  31.     var numberOfPixels:uint = 100;//每次融解100个像素      
  32.     bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, fillColor);  
  33.     var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, rndColor, true);  
  34.        
  35.     if(grayRegion.width == 0 && grayRegion.height == 0 ) {  
  36.         bmd.dispose();  
  37.         rndColor = Math.random() * 0xffffffff;  
  38.         fillColor = Math.random() * 0xffffff;  
  39.         bmd = new BitmapData(100100false, rndColor);  
  40.         bitmap.bitmapData = bmd;  
  41.            
  42.         //tim.stop();  
  43.     }  
  44. }  

13.查找满足条件的颜色并替换

[java] view plaincopy
  1. import flash.display.Bitmap;  
  2. import flash.display.BitmapData;  
  3. import flash.display.BitmapDataChannel;  
  4. import flash.geom.Point;  
  5. import flash.geom.Rectangle;  
  6.    
  7. var bmd1:BitmapData = new BitmapData(200200true0xFFCCCCCC);  
  8.    
  9. var seed:int = int(Math.random() * int.MAX_VALUE);  
  10. var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;  
  11. bmd1.perlinNoise(1008012, seed, falsetrue, channels, falsenull);  
  12.    
  13. var bitmap1:Bitmap = new Bitmap(bmd1);  
  14. addChild(bitmap1);  
  15.    
  16. var bmd2:BitmapData = new BitmapData(200200true0xFFCCCCCC);  
  17. var pt:Point = new Point(00);  
  18. var rect:Rectangle = new Rectangle(00200200);  
  19. var threshold:uint =  0x00800000;//50%的红色通道值   
  20. var color:uint = 0x80FF0000;//替换后的颜色  
  21. var maskColor:uint = 0x00FF0000;//因为只查找红色通道,所以遮罩仅为纯红色通道  
  22. bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);  
  23.    
  24. var bitmap2:Bitmap = new Bitmap(bmd2);  
  25. bitmap2.x = bitmap1.x + bitmap1.width + 10;  
  26. addChild(bitmap2);  
  27.    
  28. addEventListener(Event.ENTER_FRAME,EnterFrameHandler);  
  29.    
  30. function EnterFrameHandler(e:Event):void{  
  31.     seed = int(Math.random() * int.MAX_VALUE);  
  32.     bmd1.perlinNoise(1008012, seed, falsetrue, channels, falsenull);  
  33.     bitmap1.bitmapData = bmd1;  
  34.     bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);  
  35.     bitmap2.bitmapData = bmd2;  
  36. }  

14.综合应用1:模仿MetaBall(当然这种方法并不精确)

[java] view plaincopy
  1. var ballNum:uint=5;  
  2. var balls:Array = new Array();  
  3. var sW:Number=stage.stageWidth;  
  4. var sH:Number=stage.stageHeight;  
  5. var container:Sprite = new Sprite();  
  6. var bmd:BitmapData=new BitmapData(sW,sH,false,0x00000000);  
  7. var bitmap:Bitmap;  
  8. var i:uint=0;  
  9. var rect:Rectangle=new Rectangle(0,0,sW,sH);  
  10. var pt:Point=new Point(0,0);  
  11. var filter:BlurFilter=new BlurFilter(15,15);  
  12.    
  13. function init() {  
  14.     for (i=0; i<ballNum; i++) {  
  15.         var b:Ball=new Ball(30+Math.random()*40,0xffffff);  
  16.         balls.push(b);  
  17.         b.x = (sW - b.width)*Math.random() + b.radius;  
  18.         b.y = (sH - b.width)*Math.random() + b.radius;  
  19.         b.vx=(Math.random()*2-1)*2;  
  20.         b.vy=(Math.random()*2-1)*2;  
  21.         container.addChild(b);  
  22.     }  
  23.    
  24.     bmd.draw(container);  
  25.     bmd.applyFilter(bmd, rect, pt, filter);  
  26.     bitmap=new Bitmap(bmd);  
  27.     addChild(bitmap);  
  28.     addEventListener(Event.ENTER_FRAME,enterFrameHandler);  
  29. }  
  30.    
  31. function enterFrameHandler(e:Event):void {  
  32.     for (i=0; i<ballNum; i++) {  
  33.         var b:Ball=balls[i];  
  34.         b.x+=b.vx;  
  35.         b.y+=b.vy;  
  36.         var adjust:uint=5;  
  37.         if (b.x>=sW-b.radius-adjust) {  
  38.             b.x=sW-b.radius-adjust;  
  39.             b.vx*=-1;  
  40.         } else if (b.x<b.radius+adjust) {  
  41.             b.x=b.radius+adjust;  
  42.             b.vx*=-1;  
  43.         }  
  44.    
  45.         if (b.y>=sH-b.radius-adjust) {  
  46.             b.y=sH-b.radius-adjust;  
  47.             b.vy*=-1;  
  48.         } else if (b.y<b.radius+adjust) {  
  49.             b.y=b.radius+adjust;  
  50.             b.vy*=-1;  
  51.         }  
  52.     }  
  53.    
  54.     bmd.dispose();  
  55.     bmd=new BitmapData(sW,sH,false,0x00000000);  
  56.     bmd.draw(container);  
  57.     bmd.applyFilter(bmd, rect, pt, filter);  
  58.     bitmap.bitmapData=bmd;  
  59. }  
  60.    
  61. init();  

15.综合应用2-粒子效果(从天地会淘来的)

[java] view plaincopy
  1. package asbook  
  2. {  
  3.     import flash.display.*  
  4.     import flash.geom.*  
  5.     public class particleSample extends Sprite   
  6.     {  
  7.         private var apoint : Point;  
  8.         private var aspeed : Number = 0;  
  9.         private var arote  : Number = 0;  
  10.         private var cpoint : Point;  
  11.         private var rl : Number = 0;  
  12.            
  13.         public function particleSample(cp:Point , lg:Number , art:Number , asp:Number):void  
  14.         {// 1s  
  15.             apoint = new Point();  
  16.             cpoint = cp;  
  17.             rl = lg;  
  18.             arote = art;  
  19.             aspeed = asp;  
  20.             setapoint();  
  21.         }// 1e  
  22.            
  23.         public function pmove():Point   
  24.         {// 2s  
  25.             arote += aspeed;  
  26.             if(arote >= 360) arote -= 360;  
  27.             setapoint();  
  28.             return apoint;  
  29.         }// 2e  
  30.            
  31.         public function setapoint():void  
  32.         {// 3s  
  33.             var temp:Number = arote * Math.PI / 180;  
  34.             apoint.x = cpoint.x + rl * Math.cos(temp);  
  35.             apoint.y = cpoint.y + rl * Math.sin(temp);  
  36.                
  37.         }// 3e  
  38.     }// class end  
  39. }// package end  

[java] view plaincopy
  1. package asbook{  
  2.     import flash.events.*;  
  3.     import flash.display.*;  
  4.     import flash.text.*;  
  5.     import flash.utils.*;  
  6.     public class FPSshow extends Sprite {  
  7.         private var FPStxt:TextField;  
  8.         private var FPScount:Number;  
  9.         private var FPStimer:int;  
  10.         private var fm:TextFormat;  
  11.         public function FPSshow() {  
  12.             fm = new TextFormat();  
  13.             fm.size  = 20;  
  14.             FPStxt = new TextField();  
  15.             FPStxt.defaultTextFormat = fm;  
  16.             FPScount = 0;  
  17.             FPStxt.textColor = 0xFFFFFF;  
  18.             FPStxt.x = 10;  
  19.             FPStxt.y = 10;  
  20.             addEventListener(Event.ADDED , onadd);  
  21.             addEventListener(Event.REMOVED  , onremove);  
  22.    
  23.         }  
  24.         private function onadd(evt:Event) {  
  25.             stage.addEventListener(Event.ENTER_FRAME  , showFPS);  
  26.             addChild(FPStxt);  
  27.             FPStimer = getTimer();  
  28.         }  
  29.         private function onremove(evt:Event) {  
  30.             stage.removeEventListener(Event.ENTER_FRAME , showFPS);  
  31.         }  
  32.         private function showFPS(evt:Event ) {  
  33.             if ( getTimer() - 1000 > FPStimer ) {  
  34.                 FPStimer = getTimer();  
  35.                 FPStxt.text = "FPS : "+FPScount;  
  36.                 FPScount = 0;  
  37.             } else {  
  38.                 FPScount++;  
  39.             }  
  40.         }  
  41.    
  42.     }//end class  
  43. }//end package  

[java] view plaincopy
  1. package asbook{  
  2.     import asbook.particleSample;  
  3.     import asbook.FPSshow;  
  4.     import flash.filters.*;  
  5.     import flash.display.*;  
  6.     import flash.geom.*;  
  7.     import flash.events.*;  
  8.        
  9.     [SWF(height="300",width="300",frameRate=100)]  
  10.     public class main extends MovieClip {  
  11.         private var gNum1:int=1500;  
  12.         private var gNum2:int=1500;  
  13.         private var gArr:Array=[];  
  14.         private var ccPoint:Point;  
  15.         private var rrl:Number;  
  16.         private var length1:Number=50;  
  17.         private var length2:Number=200;  
  18.         private var length3:Number=300;  
  19.         private var bmp:Bitmap;  
  20.         private var bmd:BitmapData;  
  21.         private var bmdctf:ColorTransform=new ColorTransform(0.96,0.86,0);  
  22.         private var stgw:Number=stage.stageWidth;  
  23.         private var stgh:Number=stage.stageHeight;  
  24.         private var started:Boolean=false;  
  25.         private var bmped:Boolean=false;  
  26.    
  27.         public function main() {  
  28.             ccPoint=new Point(stgw/2,stgh/2);  
  29.             initbmp();  
  30.             initstart();  
  31.             addEventListener(Event.ENTER_FRAME , run);  
  32.             addChild( new FPSshow()  );  
  33.         }  
  34.    
  35.    
  36.         private function initbmp():void {  
  37.             if (bmped) {  
  38.                 return;  
  39.             }  
  40.             bmped=true;  
  41.             bmd=new BitmapData(stgw,stgh,false,0);  
  42.             bmp=new Bitmap(bmd);  
  43.             addChild(bmp);  
  44.         }  
  45.    
  46.         private function initstart():void {  
  47.             if (started) {  
  48.                 return;  
  49.             }  
  50.             started=true;  
  51.    
  52.             for (var i:int  = 1; i <= gNum1; i++) {  
  53.                 rrl=Math.abs(Math.random()-Math.random());  
  54.                 var pp:particleSample = new particleSample(ccPoint , rrl * ( (length2 - length1)  / 2  *  1.2 )  + length1 / 2  , Math.random() * 360 , Math.random() * 10 - 6 );  
  55.                 gArr.push(pp);  
  56.             }  
  57.    
  58.             for (i  = 1; i <= gNum2; i++) {  
  59.                 rrl=Math.abs(Math.random()-Math.random());  
  60.                 var pp:particleSample = new particleSample(ccPoint , rrl *  (length3 - length2) / 2      + length2 / 2  , Math.random() * 360 , Math.random() * 5 - 3 );  
  61.                 gArr.push(pp);  
  62.             }  
  63.             trace("Total:  " + gArr.length);  
  64.         }  
  65.         private function run(evt:Event):void {  
  66.             bmd.lock();  
  67.             bmd.colorTransform(bmd.rect , bmdctf);  
  68.             bmd.applyFilter(bmd , bmd.rect , new Point() , new BlurFilter(10 , 10 ,1));  
  69.             var pppoint:Point = new Point();  
  70.             for (var i:int = 0; i <=( gArr.length - 1 ); i++) {  
  71.                 var pptemp:particleSample=gArr[i] as particleSample;  
  72.                 pppoint=pptemp.pmove();  
  73.                 bmd.setPixel32(pppoint.x , pppoint.y , 0xffffff);  
  74.             }  
  75.             bmd.unlock();  
  76.         }  
  77.     }// main class end  
  78. }//package end  
原创粉丝点击