dsgnArea被dsgnAreaMask屏蔽,其中inturn是一个movieclip
dsgnArea.mask = dsgnAreaMask;
dsgnAreaMask和dsgnArea的宽度,高度和位置相同。
我动态地为dsgnArea添加了多个动画片段和标签; 喜欢.. dsgnArea.addChild(movieClip1); dsgnArea.addChild(movieClip2); dsgnArea.addChild(label1的); dsgnArea.addChild(LABEL2);等等...
these movieclips (movieClip1,movieClip2,......) and labels(label1,label2,....) positions can be altered in runtime..
但是当我用dsgnAreaMask屏蔽dsgnArea时,只有部分添加的movieClip和标签可见...
所以,我的问题是将dsgnArea中的可见部分抓取到位图中,就像特定的dsgnArea的屏幕截图一样,并将其保存在我的服务器中。
请帮我解决这个问题。
答案 0 :(得分:1)
Say s
是您要捕获的DisplayObject对象,m
是应用于其上的蒙版。
var maskRect:Rectangle = m.getRect(s);
var matrix:Matrix = new Matrix(1, 0, 0, 1, -maskRect.x, -maskRect.y);
var w:Number = Math.min(s.width, maskRect.right) - maskRect.x;
var h:Number = Math.min(s.height, maskRect.bottom) - maskRect.y;
var bd:BitmapData = new BitmapData(w, h);
bd.draw(s, matrix);
这有用吗?
答案 1 :(得分:0)
您正在寻找BitmapData draw方法。您可以使用它的clipRect参数来定义您想要绘制的内容(蒙版部分)。
答案 2 :(得分:0)
Quasimondo做了一个方便的小方法(拍摄整个displayObject的快照),可以在这里找到:http://www.quasimondo.com/archives/000670.php
我不知道它是否适用于蒙面内容。 如果没有,诀窍就是将整个内容按掩码大小翻译
var bounds:Rectangle = dsgnAreaMask.getBounds( dsgnAreaMask );
而不是使用剪辑的内容
var bounds:Rectangle = clip.getBounds( clip );
就保存文件到服务器而言,问题(已回答?)AS3 Save Media File to server