我在舞台中有一个MovieClip,大部分(不准确)居中于舞台中间。
当我尝试将MovieClip保存到位图中以便将其上传到Facebook时,我得到裁剪的图像或白色图像(空白)。
以下是生成位图的代码:
var source:BitmapData = new BitmapData(board.width, board.height);
source.draw(board);
var bitmap:Bitmap = new Bitmap(source);
我得到的结果是下图中的黄色区域:
我在使用可能与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);
答案 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);