Показать сообщение отдельно
Старый 12.10.2012, 23:20
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 7  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Для того, чтобы отрисовать спрайт с поворотом, нужна битмапдата, большая по размеру, чем спрайт. Но я вижу, что ты поворачиваешь битмап и это у него точка регистрации находится в координатах 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);
Что-то все равно не так... Картинка так и крутится вокруг регистрационной точки. И какие-то артефакты добавились...

Добавлено через 6 минут
Цитата:
Сообщение от Isfet Посмотреть сообщение
Код AS3:
import flash.display.SpreadMethod;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.MouseEvent;
 
var spr:Sprite = new Sprite();
var tmp:RockSpr = new RockSpr();
var bd:BitmapData = new BitmapData(tmp.width, tmp.height);
var bm:Bitmap = new Bitmap(bd);
bd.draw(tmp);
bm.x = -bm.width*0.5;
bm.y = -bm.height*0.5;
spr.x = 100;
spr.y = 100;
spr.addChild(bm);
 
addChild(spr);
function rotatiOnByClick(e:MouseEvent){
	spr.rotation += 10;
}
spr.addEventListener(MouseEvent.CLICK,rotatiOnByClick);
Этот принцип работает, спасибо! Но я сознательно пытался не пользоваться контейнерами вроде спрайтов или мувиклипов, т.к. объектов предполагается достаточно большое количество, а эти структуры в больших объемах очень сильно влияют на производительность. Есть какой-нибудь аналогичный способ средствами битмап?
__________________
uglan