2011-10-11 20 views
1

我尝试在位图中转换影片剪辑时出现问题。一切正常,但某些属性不在新位图中。例如,如果我有一个影片剪辑并将其翻转(mc.scaleX * = -1),并将其转换为位图,则不会翻转它。从AS3中的影片剪辑创建位图时出现问题

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; 

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

感谢您的帮助。

回答

1

你会更好地得到您要变换和使用它矩阵方法的影片剪辑的矩阵,等等;

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

0

当您使用draw()时,您将不会应用到DisplayObject本身的任何转换。如果要缩放或翻译它,则需要对提供给绘制调用的变换矩阵执行此操作。

在这种情况下,改变你的矩阵初始化,这可能做的伎俩:

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