Показать сообщение отдельно
Старый 12.10.2012, 12:31
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Для того, чтобы отрисовать спрайт с поворотом, нужна битмапдата, большая по размеру, чем спрайт. Но я вижу, что ты поворачиваешь битмап и это у него точка регистрации находится в координатах 0, 0. Самый простой вариант - вложить эту битмапу в какой-нибудь контейнер со смещением и поворачивать этот контейнер. Правильный вариант - заюзать матрицу, что-то типа такого:

Код AS3:
var bd:BitmapData = new BitmapData(200, 50, false, 0x000000);
var bm:Bitmap = new Bitmap(bd);
 
var m:Matrix = new Matrix();
m.translate(-bd.width * 0.5, - bd.height * 0.5);
m.rotate(Math.PI / 4);
m.translate(e.stageX, e.stageY);
bm.transform.matrix = m;
 
addChild(bm);
Создание матрицы в этом коде - излишество. Не обязательно это делать, так как у спрайта уже есть матрица и можно использовать ее. Т.е. при врисовке спрайта, содержащего в себе растровую картинку, достаточно добавить в качестве параметра draw матрицу, автоматически созданную для спрайта.
Код AS3:
bitmapData.draw(sprite, sprite.transform.matrix);
Она уже будет содержать необходимые настройки. Если спрайт был повернут, то и ротейт матрицы будет соответствующим