Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.BitmapData;
- import flash.display.DisplayObjectContainer;
- import flash.geom.Matrix;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- public class CollisionTest
- {
- static private var returnValue:Boolean;
- static private var onePoint:Point;
- static private var twoPoint:Point;
- static private var oneRectangle:Rectangle;
- static private var twoRectangle:Rectangle;
- static private var oneClipBmpData:BitmapData;
- static private var twoClipBmpData:BitmapData;
- static private var oneOffset:Matrix;
- static private var twoOffset:Matrix;
- static public function simple(clip1:DisplayObjectContainer, clip2:DisplayObjectContainer):Boolean
- {
- returnValue = false;
- oneRectangle = clip1.getBounds(clip1);
- oneClipBmpData = new BitmapData(oneRectangle.width, oneRectangle.height, true, 0);
- oneClipBmpData.draw(clip1);
- twoRectangle = clip2.getBounds(clip2);
- twoClipBmpData = new BitmapData(twoRectangle.width, twoRectangle.height, true, 0);
- twoClipBmpData.draw(clip2);
- onePoint = new Point(clip1.x, clip1.y)
- twoPoint = new Point(clip2.x, clip2.y)
- if (oneClipBmpData.hitTest(onePoint, 255, twoClipBmpData, twoPoint, 255))
- {
- returnValue = true;
- }
- return returnValue;
- }
- static public function complex(clip1:DisplayObjectContainer, clip2:DisplayObjectContainer):Boolean
- {
- returnValue = false;
- twoRectangle = clip1.getBounds(clip1);
- oneOffset = clip1.transform.matrix;
- oneOffset.tx = clip1.x - clip2.x;
- oneOffset.ty = clip1.y - clip2.y;
- twoClipBmpData = new BitmapData(twoRectangle.width, twoRectangle.height, true, 0);
- twoClipBmpData.draw(clip1, oneOffset);
- oneRectangle = clip2.getBounds(clip2);
- oneClipBmpData = new BitmapData(oneRectangle.width, oneRectangle.height, true, 0);
- twoOffset = clip2.transform.matrix;
- twoOffset.tx = clip2.x - clip2.x;
- twoOffset.ty = clip2.y - clip2.y;
- oneClipBmpData.draw(clip2, twoOffset);
- onePoint = new Point(oneRectangle.x, oneRectangle.y);
- twoPoint = new Point(twoRectangle.x, twoRectangle.y);
- if(oneClipBmpData.hitTest(onePoint, 255, twoClipBmpData, twoPoint, 255))
- {
- returnValue = true;
- }
- twoClipBmpData.dispose();
- oneClipBmpData.dispose();
- return returnValue;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment