Flash 在AS3中从电影剪辑创建位图时出现问题
我在尝试将电影剪辑转换为位图时遇到问题。一切正常,但有些属性不在新位图中 例如,如果我有一个电影剪辑,我翻转它(mc.scaleX*=-1),然后我在位图中转换它,它不是翻转它Flash 在AS3中从电影剪辑创建位图时出现问题,flash,actionscript-3,bitmap,movieclip,Flash,Actionscript 3,Bitmap,Movieclip,我在尝试将电影剪辑转换为位图时遇到问题。一切正常,但有些属性不在新位图中 例如,如果我有一个电影剪辑,我翻转它(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 ); b
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;
如果你能检查一下这个简单的例子,你就会明白我的意思,“位图”应该是翻转的,而不是翻转的
感谢您的帮助。当您使用
draw()
时,您应用于DisplayObject本身的任何转换都不会得到尊重。如果要缩放或平移它,则需要对提供给draw调用的变换矩阵执行此操作
在这种情况下,将矩阵初始化更改为此可能会起到以下作用:
var matrix:Matrix = new Matrix( 1, 0, 0, 1, -(box1.width / 2), (box1.height / 2) );
当您使用
draw()
DisplayObject时,不会考虑应用于DisplayObject本身的任何转换。如果要缩放或平移它,则需要对提供给draw调用的变换矩阵执行此操作
在这种情况下,将矩阵初始化更改为此可能会起到以下作用:
var matrix:Matrix = new Matrix( 1, 0, 0, 1, -(box1.width / 2), (box1.height / 2) );
你最好得到你想要变换的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);
这种方法比较容易,因为在矩阵上设置旋转和缩放可能比较复杂
你最好得到你想要转换的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);
这种方法比较容易,因为在矩阵上设置旋转和缩放可能比较复杂