2011-10-08 46 views
0

我有一個大部分(不準確)居中於舞臺中間的舞臺內部的MovieClip。Movieclip將位圖保存在錯誤的座標上

當我嘗試將MovieClip保存到位圖中以將其上傳到Facebook時,我得到裁剪圖像或白色圖像(空白)。

這裏是生成位圖的代碼:

var source:BitmapData = new BitmapData(board.width, board.height); 
source.draw(board); 
var bitmap:Bitmap = new Bitmap(source); 

我得到的結果是黃色區域如下圖:

Cropped Image

我也遇到問題與座標將新項目添加到可能相關的MovieClip時,例如必須手動爲要添加到MovieClip的項目設置x和y,因爲它不會從MovieClip的位置0,0添加它自己。

在基於直接交互的東西mc.mouseX和mc.mouseY添加到正確的位置,但是不是我必須使用固定數字設置座標。

閃光燈建立在主舞臺區域的頂部,在側面有幾個動畫片作爲按鈕,「板」MovieClip就是我想要保存的內容。

我該如何去正確地重置MovieClip的座標或從主舞臺上裁剪圖像?

我一直在使用localToGlobal裁剪圖像,但與下面的代碼沒有成功的嘗試:

var point:Point = new Point(stage.x, stage.y); 
board.localToGlobal(point); 

var rect:Rectangle = new Rectabgle(point.x, point.y, board.width, board.height); 
var source:BitmapData = new BitmapData(board.width, board.height); 
source.draw(stage, null, null, null, rect, true); 
var bitmap:Bitmap = new Bitmap(source); 

回答

0

嘗試使用變換矩陣(位置,旋轉,縮放)當你調用的draw():

var source:BitmapData = new BitmapData(board.width, board.height); 
source.draw(board,board.transform.concatenatedMatrix); 
0

兩件事情,可以幫助:

localToGlobal和globalToLocal返回轉換點。

在你的情況你的代碼應該是:

point = board.localToGlobal(point); 

退房方法的getBounds()得到的DisplayObject相對於一些其他的DisplayObject一個的邊框區域。如果您的孩子在負座標空間,也可能有用。

所以代碼可能是這樣的:

var bounds: Rectangle = board.getBounds(stage); 
var source:BitmapData = new BitmapData(bounds.width, bounds.height); 
source.draw(stage, null, null, null, bounds, true); 
var bitmap:Bitmap = new Bitmap(source);