Цитата:
Сообщение от Волгоградец
Для того, чтобы отрисовать спрайт с поворотом, нужна битмапдата, большая по размеру, чем спрайт. Но я вижу, что ты поворачиваешь битмап и это у него точка регистрации находится в координатах 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);
|
Этот принцип работает, спасибо! Но я сознательно пытался не пользоваться контейнерами вроде спрайтов или мувиклипов, т.к. объектов предполагается достаточно большое количество, а эти структуры в больших объемах очень сильно влияют на производительность. Есть какой-нибудь аналогичный способ средствами битмап?