Mars714

collisoiontest

Mar 7th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package  
  2. {
  3.     import flash.display.BitmapData;
  4.     import flash.display.DisplayObjectContainer;
  5.     import flash.geom.Matrix;
  6.     import flash.geom.Point;
  7.     import flash.geom.Rectangle;
  8.    
  9.     public class CollisionTest
  10.     {
  11.        
  12.         static private var returnValue:Boolean;
  13.        
  14.         static private var onePoint:Point;
  15.         static private var twoPoint:Point;
  16.        
  17.         static private var oneRectangle:Rectangle;
  18.         static private var twoRectangle:Rectangle;
  19.        
  20.         static private var oneClipBmpData:BitmapData;
  21.         static private var twoClipBmpData:BitmapData;
  22.        
  23.         static private var oneOffset:Matrix;
  24.         static private var twoOffset:Matrix;
  25.        
  26.         static public function simple(clip1:DisplayObjectContainer, clip2:DisplayObjectContainer):Boolean
  27.         {
  28.             returnValue = false;
  29.            
  30.             oneRectangle = clip1.getBounds(clip1);
  31.             oneClipBmpData = new BitmapData(oneRectangle.width, oneRectangle.height, true, 0);
  32.             oneClipBmpData.draw(clip1);
  33.            
  34.             twoRectangle = clip2.getBounds(clip2);
  35.             twoClipBmpData = new BitmapData(twoRectangle.width, twoRectangle.height, true, 0);
  36.             twoClipBmpData.draw(clip2);
  37.            
  38.             onePoint = new Point(clip1.x, clip1.y)
  39.             twoPoint =  new Point(clip2.x, clip2.y)
  40.            
  41.             if (oneClipBmpData.hitTest(onePoint, 255, twoClipBmpData, twoPoint, 255))
  42.             {
  43.                 returnValue = true;
  44.             }
  45.            
  46.             return returnValue;
  47.         }
  48.         static public function complex(clip1:DisplayObjectContainer, clip2:DisplayObjectContainer):Boolean
  49.         {
  50.             returnValue = false;
  51.            
  52.             twoRectangle = clip1.getBounds(clip1);
  53.             oneOffset = clip1.transform.matrix;
  54.             oneOffset.tx = clip1.x - clip2.x;
  55.             oneOffset.ty = clip1.y - clip2.y;  
  56.            
  57.             twoClipBmpData = new BitmapData(twoRectangle.width, twoRectangle.height, true, 0);
  58.             twoClipBmpData.draw(clip1, oneOffset);     
  59.            
  60.             oneRectangle = clip2.getBounds(clip2);
  61.             oneClipBmpData = new BitmapData(oneRectangle.width, oneRectangle.height, true, 0);
  62.            
  63.             twoOffset = clip2.transform.matrix;
  64.             twoOffset.tx = clip2.x - clip2.x;
  65.             twoOffset.ty = clip2.y - clip2.y;  
  66.            
  67.             oneClipBmpData.draw(clip2, twoOffset);
  68.            
  69.             onePoint = new Point(oneRectangle.x, oneRectangle.y);
  70.             twoPoint = new Point(twoRectangle.x, twoRectangle.y);
  71.            
  72.             if(oneClipBmpData.hitTest(onePoint, 255, twoClipBmpData, twoPoint, 255))
  73.             {
  74.                 returnValue = true;
  75.             }
  76.            
  77.             twoClipBmpData.dispose();
  78.             oneClipBmpData.dispose();
  79.            
  80.             return returnValue;
  81.         }
  82.        
  83.     }
  84.    
  85. }
Advertisement
Add Comment
Please, Sign In to add comment