2011-10-11 18 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));