从AS3中的影片剪辑创建位图时出现问题

时间:2011-10-11 04:41:45

标签: 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 );
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;

如果你可以查看这个简单的例子,你会看到我的意思,“位图”应该是翻转它不是。

感谢您的帮助。

2 个答案:

答案 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);

这种方式更容易,因为在矩阵上设置旋转和缩放可能很复杂。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6

答案 1 :(得分:0)

当您draw()时,您对DisplayObject本身应用的所有转换都不会得到尊重。如果要缩放或平移它,则需要对要提供给绘制调用的变换矩阵执行此操作。

在这种情况下,将矩阵初始化更改为此可能会起到作用:

var matrix:Matrix = new Matrix( 1, 0, 0, 1, -(box1.width / 2), (box1.height / 2) );