·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0对图片进行不规则切割源代码实例

时间:2013-11-07 14:109ria.com
[AS3]as3.0对图片进行不规则切割源代码实例

[AS3]as3.0对图片进行不规则切割源代码实例

  1. import flash.display.Sprite; 
  2. import flash.display.Loader; 
  3. import flash.net.URLRequest; 
  4. import flash.display.BitmapData; 
  5. import flash.events.Event; 
  6. import flash.events.MouseEvent; 
  7. import flash.filters.GlowFilter; 
  8. import flash.filters.DropShadowFilter; 
  9.  
  10. var spArray:Array = new Array(); 
  11. var rows,cols,w,h,i,j,m,n:Number; 
  12. var filterArray:Array = new Array(); 
  13. //定义行数列数 
  14. rows = cols = 5; 
  15. //画曲线的重要参数,curWidth为贝塞尔曲线的参数 
  16. var curWidth:Number; 
  17. var ellipseA:Number; 
  18. var ellipseB:Number; 
  19. //加载图片 
  20. var url = new URLRequest("1.jpg"); 
  21. var _loader = new Loader(); 
  22. _loader.load(url); 
  23. _loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImgLoad); 
  24.  
  25. //定义滤镜 
  26. var color1:Number = 0x33CCFF
  27. var alp1:Number = 0.8; 
  28. var blurX1:Number = 2
  29. var blurY1:Number = 2
  30. var strength1:Number = 2
  31. var quality1:Number = 3
  32. var inner1:Boolean = false
  33. var knockout1:Boolean = false
  34. var filter1:GlowFilter = new GlowFilter(color,alp1,blurX1,blurY1,strength1,quality1,inner1,knockout1); 
  35. filterArray.push(filter1); 
  36.  
  37. var splArray:Array = new Array(); 
  38. var distance:Number = 3
  39. var angleInDegrees:Number = 3
  40. var color:Number = 0x000033
  41. var alp:Number = 0.8; 
  42. var blurX:Number = 3
  43. var blurY:Number = 3
  44. var strength:Number = 1
  45. var quality:Number = 3
  46. var inner:Boolean = false
  47. var knockout:Boolean = false
  48. var hideObject:Boolean = false
  49. var filter:DropShadowFilter = new DropShadowFilter(distance,angleInDegrees,color,alp,blurX,blurY,strength,quality,inner,knockout,hideObject); 
  50. filterArray.push(filter); 
  51.  
  52. //对每个格子的形状初始化,如果left, right, up, down全部为true表示四面有填充的椭圆 
  53. for (i = 0; i < rows; i ++) 
  54.      for (j = 0; j < cols; j++) 
  55.     { 
  56.         var ms:MySplit = new MySplit(i,j); 
  57.  
  58.         //首先调用随机数,确认本格右方和下方是否填充 
  59.         m = int(Math.random() * 2); 
  60.         n = int(Math.random() * 2); 
  61.         if (m == 1 && j < cols - 1) 
  62.         { 
  63.             ms.right = true
  64.         } 
  65.         if (n == 1 && i < rows - 1) 
  66.         { 
  67.             ms.down = true
  68.         } 
  69.         //cuplayer.com检测本格左方是否需要填充 
  70.         if (j > 0 &&! splArray[i * cols + j - 1].right) 
  71.         { 
  72.             ms.left = true
  73.         } 
  74.         //cuplayer.com检测本格上方是否需要填充 
  75.         if (i > 0 && ! splArray[(i - 1) * cols + j].down) 
  76.         { 
  77.             ms.up = true
  78.         } 
  79.         splArray.push(ms); 
  80.     } 
  81.  
  82. //cuplayer.com主处理函数 
  83. function onImgLoad(event:Event):void 
  84.     var bitmap:BitmapData = new BitmapData(_loader.width,_loader.height); 
  85.     w = _loader.width / rows; 
  86.     curWidth = w / 4; 
  87.     h = _loader.height / cols; 
  88.     //ellipseA始终较大,这样可以适应竖着或横着的椭圆 
  89.     ellipseA = h > w ? h / 5:w / 5; 
  90.     ellipseB = h<w? h / 5: w /5; 
  91.     //cuplayer.com逐个分割图片 
  92.     for (i = 0; i < rows; i ++) 
  93.     { 
  94.         for (j = 0; j < cols; j++) 
  95.         { 
  96.             bitmap.draw(_loader); 
  97.             var sampleSprite:Sprite = new Sprite(); 
  98.             sampleSprite.graphics.lineStyle(); 
  99.             sampleSprite.graphics.beginBitmapFill(bitmap); 
  100.             myDraw(sampleSprite, splArray[i*cols + j]); 
  101.             sampleSprite.graphics.endFill(); 
  102.             if (w*rows > 1000) 
  103.             { 
  104.                 sampleSprite.scaleX = 1000 / (w * rows); 
  105.                 sampleSprite.scaleY = 1000/(w*rows) 
  106.             } 
  107.             sampleSprite.x = 2 * j; 
  108.             sampleSprite.y = 2 * i; 
  109.             addChild(sampleSprite); 
  110.             sampleSprite.filters = filterArray
  111.             spArray.push(sampleSprite); 
  112.             sampleSprite.addEventListener(MouseEvent.MOUSE_DOWN, onDown); 
  113.             sampleSprite.addEventListener(MouseEvent.MOUSE_UP, onUp); 
  114.         } 
  115.     } 
  116. //cuplayer.com画图函数 
  117. function myDraw(sprite:Sprite, ms:MySplit) 
  118.     i = ms.row; 
  119.     j = ms.col; 
  120.     sprite.graphics.drawRoundRect(j * w, i * h, w, h, 5, 5); 
  121.     if (ms.right) 
  122.     { 
  123.         sprite.graphics.moveTo(w*(j+1), i*h); 
  124.         sprite.graphics.curveTo(w*(j+1) - curWidth, i * h + h / 2, w*(j+1), (i+1)*h); 
  125.         sprite.graphics.drawEllipse(w*(j+1)-0.5*curWidth, i*h+0.5*h-0.5*ellipseA,ellipseB,ellipseA); 
  126.     } 
  127.     else if(j < 4
  128.     { 
  129.         sprite.graphics.moveTo(w*(j+1), i*h); 
  130.         sprite.graphics.curveTo(w*(j+1) + curWidth, i * h + h / 2, w*(j+1), (i+1)*h); 
  131.         sprite.graphics.drawEllipse(w*(j+1)+0.5*curWidth - ellipseB, i*h+0.5*h-0.5*ellipseA,ellipseB,ellipseA); 
  132.     } 
  133.     if (ms.left) 
  134.     { 
  135.         sprite.graphics.moveTo(w*j, i*h); 
  136.         sprite.graphics.curveTo(w*j + curWidth, i * h + h / 2, w*j, (i+1)*h); 
  137.         sprite.graphics.drawEllipse(w*j+0.5*curWidth - ellipseB, i*h+0.5*h-0.5*ellipseA,ellipseB,ellipseA); 
  138.     } 
  139.     else if (j > 0) 
  140.     { 
  141.         sprite.graphics.drawEllipse(w*j-0.5*curWidth, i*h+0.5*h-0.5*ellipseA,ellipseB,ellipseA); 
  142.         sprite.graphics.moveTo(w*j, i*h); 
  143.         sprite.graphics.curveTo(w*j - curWidth, i * h + h / 2, w*j, (i+1)*h); 
  144.     } 
  145.     if (ms.down) 
  146.     { 
  147.         sprite.graphics.moveTo(w*j, (i+1)*h); 
  148.         sprite.graphics.curveTo(w*j+0.5*w, (i+1) * h - curWidth, (j+1)*w, (i+1)*h); 
  149.         sprite.graphics.drawEllipse(w*j+0.5*w - 0.5*ellipseA, (i+1)*h-0.5*curWidth, ellipseA,ellipseB); 
  150.     } 
  151.     else if(i < 4
  152.     { 
  153.         sprite.graphics.moveTo(w*j, (i+1)*h); 
  154.         sprite.graphics.curveTo(w*j+0.5*w, (i+1) * h + curWidth, (j+1)*w, (i+1)*h); 
  155.         sprite.graphics.drawEllipse(w*j+0.5*w - 0.5*ellipseA, (i+1)*h+0.5*curWidth - ellipseB,ellipseA,ellipseB); 
  156.     } 
  157.     if (ms.up) 
  158.     { 
  159.         sprite.graphics.moveTo(w*j, i*h); 
  160.         sprite.graphics.curveTo(w*j+0.5*w, i * h + curWidth, (j+1)*w, i*h); 
  161.         sprite.graphics.drawEllipse(w*j+0.5*w - 0.5*ellipseA, i*h+0.5*curWidth - ellipseB,ellipseA,ellipseB); 
  162.     } 
  163.     else  if(i > 0) 
  164.     { 
  165.         sprite.graphics.moveTo(w*j, i*h); 
  166.         sprite.graphics.curveTo(w*j+0.5*w, i * h - curWidth, (j+1)*w, i*h); 
  167.         sprite.graphics.drawEllipse(w*j+0.5*w - 0.5*ellipseA, i*h-0.5*curWidth,ellipseA,ellipseB); 
  168.     } 
  169.  
  170. //cuplayer.com拖曳处理函数 
  171. function onDown(e:MouseEvent) 
  172.     e.target.startDrag(); 
  173. function onUp(e:MouseEvent) 
  174.     e.target.stopDrag(); 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器