Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 在AS3中从电影剪辑创建位图时出现问题_Flash_Actionscript 3_Bitmap_Movieclip - Fatal编程技术网

Flash 在AS3中从电影剪辑创建位图时出现问题

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

我在尝试将电影剪辑转换为位图时遇到问题。一切正常,但有些属性不在新位图中

例如,如果我有一个电影剪辑,我翻转它(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;
如果你能检查一下这个简单的例子,你就会明白我的意思,“位图”应该是翻转的,而不是翻转的


感谢您的帮助。

当您使用
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);
这种方法比较容易,因为在矩阵上设置旋转和缩放可能比较复杂