Показать сообщение отдельно
Старый 03.07.2012, 14:43
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 1  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
По умолчанию BitmapData hittest при вращении

Добрый день.Долго искал всети,столкновение 2ух обектов неправельной формы при вращении.Вобщем нашел кое что.Выдрал от туда часть кода.Вроде как все получилось и работет.Но проблема такая,в данном случае крест врашается вокруг левой верхней точки.Мне же надобы,чтоб он вращался по центру.И если ставлю регистрацию по центру,то вся точность пропадает.Подскажите плиз как мне это сделать.Вот код:
Код AS3:
var _onePoint:Point;
var _twoPoint:Point;
 
var plusrs:Rectangle;
var starrs:Rectangle;
 
 var bmp1:BitmapData;
var bmp2:BitmapData;
 
var _oneOffset:Matrix;
var _twoOffset:Matrix;
function hittest(e:Event)		{
	plus.x= mouseX;
	plus.y = mouseY;
	plus.rotation++;
plusrs = plus.getBounds(plus);
			_oneOffset = plus.transform.matrix;
			_oneOffset.tx = plus.x - star.x;
			_oneOffset.ty = plus.y - star.y;	
 
 
			bmp1 = new BitmapData(plusrs.width, plusrs.height, true, 0);
			bmp1.fillRect(bmp1.rect, 0);
			bmp1.draw(plus, _oneOffset);		
 
			starrs = star.getBounds(star);
			bmp2 = new BitmapData(starrs.width, starrs.height, true, 0);
 
			_twoOffset = star.transform.matrix;
			_twoOffset.tx = star.x - star.x;
			_twoOffset.ty = star.y - star.y;	
			bmp2.fillRect(bmp2.rect, 0);
			bmp2.draw(star, _twoOffset);
 
			_onePoint = new Point(plusrs.x, plusrs.y);
			_twoPoint = new Point(starrs.x, starrs.y);
 
			if(bmp1.hitTest(_onePoint, 255, bmp2, _twoPoint, 255))
			{
 
 
 
				star.filters = [new GlowFilter()];
				plus.filters = [new GlowFilter()];
 
			}
			else
			{
				star.filters = [];
				plus.filters = [];
 
			}
 
 
}
 
stage.addEventListener(Event.ENTER_FRAME, hittest);
На всяк случай прикрепляю fla.
С уважением Андрей.
Вложения
Тип файла: zip test.zip (6.5 Кб, 85 просмотров)