我们正在制作一个精灵中的位图数据,我们想要拍摄图像并在/尺度内旋转以适应。这是我们的代码,包括轮换。
_rotation
定义了用户输入的内容。
问题是,我们得到一个100%白色的输出文件。 我们认为图像旋转大约为0x0y,因此将图像旋转到精灵的边界之外。
此外,图像不会缩放到孩子,而是在继承时进行“裁剪”。
这样做的最佳方式是什么?基本上我们想要拍摄图像并在/尺度内旋转以适合
var sprite1:Sprite = new Sprite();
addChild(sprite1);
var photoBitmap:Bitmap = new Bitmap(_bitmapData);
sprite1.addChild(photoBitmap);
sprite1.rotation = _rotation;
var sprite2:Sprite = new Sprite();
addChild(sprite2);
sprite2.addChild(sprite1);
var bitmapData:BitmapData = new BitmapData(sprite2.width,sprite2.height,false,0xFFFFFF);
bitmapData.draw(sprite2);
答案 0 :(得分:0)
使用缩放/旋转绘制精灵的简单方法是在方法Matrix中使用bitmapData.draw()。
示例:
var sourceImage:SomeSprite = new SomeSprite();
var matrix:Matrix = new Matrix();
matrix.scale(0.5, 0.5);
matrix.rotate(0.5 * Math.PI);
var newImage:BitmapData = new BitmapData(sourceImage.width/2, sourceImage.height/2);
newImage.draw(sourceImage, matrix);
答案 1 :(得分:0)
您的问题可能是左上角旋转的原因(可能会使整个对象位于注册点之上或之上(0 x和0 y)而不会被绘制。
您可以轻松解决此问题的方法是在轮换后移动sprite1
以考虑因旋转而导致的新尺寸和位置:
...
sprite2.addChild(sprite1);
var actualPosition:Rectangle = sprite2.getBounds(sprite2); //this gets the new position/dimensions of the object
sprite1.x = -actualPosition.x;
sprite1.y = -actualPosition.y;
var bitmapData:BitmapData = new BitmapData(sprite2.width,sprite2.height,false,0xFFFFFF);
...