Movieclip将位图保存在错误的坐标处

时间:2011-10-08 23:48:15

标签: flash actionscript-3

我在舞台中有一个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,因为它不会从位置0添加自身,0,MovieClip。

在基于直接交互的事情上,mc.mouseX和mc.mouseY添加到正确的位置,但是对于非事物,我必须使用固定数字设置坐标。

闪光灯构建在主舞台区域的顶部,两侧有几个MovieClip作为按钮,而“Board”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);

2 个答案:

答案 0 :(得分:0)

在调用draw()时尝试使用变换矩阵(位置,旋转,缩放):

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

答案 1 :(得分:0)

可能会有所帮助的两件事:

localToGlobal和globalToLocal返回转换后的Point。

在您的情况下,您的代码应为:

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