我尝试在位图中转换影片剪辑时遇到问题。一切都运行良好,但有些属性不在新的位图中。
例如,如果我有一个影片剪辑并且我将其翻转(mc.scaleX * = -1)并且我将其转换为位图,则不会将其翻转。
import flash.geom.Matrix;
import flash.display.BitmapData;
import flash.display.Bitmap;
var box1:Box = new Box();
box1.x = 100;
box1.y = 20;
addChild( box1 );
box1.scaleX *= -1;
var box2:Box = new Box();
box2.x = 300;
box2.y = 20;
addChild( box2 );
var matrix:Matrix = new Matrix( 1, 0, 0, 1, (box1.width / 2), (box1.height / 2) );
var bitmapData:BitmapData = new BitmapData( box1.width, box1.height, true, 0xFFFFFF);
bitmapData.draw(box1, matrix, null, null, null, true);
var bitmap:Bitmap = new Bitmap( bitmapData );
addChild( bitmap );
bitmap.x = 400;
bitmap.y = 300;
如果你可以查看这个简单的例子,你会看到我的意思,“位图”应该是翻转它不是。
感谢您的帮助。
答案 0 :(得分:1)
您最好获得要转换的movieclip矩阵,并在其上使用矩阵方法,例如;
var myMatrix:Matrix = myDisplayObject.transform.matrix;
myMatrix.scale(1,-1);
myDisplayObject.transform.matrix = myMatrix;
var bitmapData:BitmapData = new BitmapData( box1.width, box1.height, true, 0xFFFFFF);
bitmapData.draw(box1, myMatrix, null, null, null, true);
这种方式更容易,因为在矩阵上设置旋转和缩放可能很复杂。
答案 1 :(得分:0)
当您draw()
时,您对DisplayObject本身应用的所有转换都不会得到尊重。如果要缩放或平移它,则需要对要提供给绘制调用的变换矩阵执行此操作。
在这种情况下,将矩阵初始化更改为此可能会起到作用:
var matrix:Matrix = new Matrix( 1, 0, 0, 1, -(box1.width / 2), (box1.height / 2) );