Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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 Кб, 77 просмотров)

Старый 03.07.2012, 17:09
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 2  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Код AS3:
plusrs = plus.getBounds(plus);
// fix
plusrs.x += plusrs.width * 0.5;
plusrs.y += plusrs.height * 0.5;
Вложения
Тип файла: rar test_cs4.rar (6.1 Кб, 67 просмотров)
__________________
http://artem-lobachenkov.ru/

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

Регистрация: Sep 2010
Сообщений: 49
Art_133,Огромное спасибо.Все отлично.

Добавлено через 1 час 29 минут
Сорру.Можно еще вопросик.Если я рисую более большой обьект например ту же PolyStar скажем 180х180.Уже hittest совсем не точен.В чем причина?Спасибо.

Старый 04.07.2012, 00:31
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 4  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Архив с большим объектом прикрепите.
UPD:
В моём примере с большим плюсом всё ок.
Вы точно в центре клипа-контейнера размещаете его?
Вложения
Тип файла: rar test_big_cs4.rar (6.2 Кб, 63 просмотров)
__________________
http://artem-lobachenkov.ru/


Последний раз редактировалось Art_133; 04.07.2012 в 12:39.
Старый 04.07.2012, 15:53
Andrej вне форума Посмотреть профиль Отправить личное сообщение для Andrej Найти все сообщения от Andrej
  № 5  
Ответить с цитированием
Andrej

Регистрация: Sep 2010
Сообщений: 49
Плюс я как раз оставляю таким же а меняю второй обьект.Ваш же пример вкладываю.Кстати еслю плюс большой и второй обьект большой то все ок,если же плюс оставляем маленьким,а второй обьект увеличиваем то уже нет.
Вложения
Тип файла: zip test_big_cs4edited.zip (7.1 Кб, 72 просмотров)

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
bitmapdata , hittest , matrix
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.