flash中的碰撞检测

package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	import flash.filters.GlowFilter;
	import flash.geom.Matrix;
	import flash.geom.Point;
	
	import model.Star;

	public class BitmapCollision1 extends Sprite
	{
		private var bmpd1:BitmapData;
		private var bmp1:Bitmap;
		private var bmpd2:BitmapData;
		private var bmp2:Bitmap;
		
		public function BitmapCollision1()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			//绘制星星
			var star:Star = new Star(50);
			
			bmpd1 = new BitmapData(100, 100, true, 0);
			bmpd1.draw(star, new Matrix(1, 0, 0, 1,50, 50));
			bmp1 = new Bitmap(bmpd1);
			bmp1.x = 200;
			bmp1.y = 200;
			addChild(bmp1);
			
			bmpd2 = new BitmapData(100, 100, true, 0);
			bmpd2.draw(star, new Matrix(1, 0, 0, 1,50, 50));
			bmp2 = new Bitmap(bmpd1);
			bmp2.x = 200;
			bmp2.y = 200;
			addChild(bmp2);
			
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveing);		
		}
		
		private function onMouseMoveing(event:MouseEvent):void {
			bmp2.x = mouseX - 50;
			bmp2.y = mouseY - 50;
			
			//如果发生碰撞
			if(bmpd1.hitTest(new Point(bmp1.x, bmp1.y), 255, bmpd2, new Point(bmp2.x, bmp2.y), 255)) {
				bmp1.filters = [new GlowFilter()];
				bmp2.filters = [new GlowFilter()];	
			} else {
				bmp1.filters = [];
				bmp2.filters = [];
			}
			//下面是检测一个点是否与一个位图碰撞。
			//if(bitmapDate1.hitTest(new Point(bitmap1.x, bitmap1.y),255,new Point(mouseX, mouseY))) {
    				//bitmap1.filters = [new GlowFilter()];
   				//} else {
				  //  bitmap1.filters = [];
				//}	
			//}
		
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值