【问题标题】:Screendump from within Actionscript 3.0 is it possible or?Actionscript 3.0 中的 Screendump 是否可行?
【发布时间】:2009-11-01 06:12:43
【问题描述】:

我们现在有 Bitmap 和 Bitmapdata 对象。在使用网络摄像头时,我们可以从中获取原始像素数据输出。但是,我们能否以某种方式从“stage”或“swf”对象中获取原始像素数据?

我想用它来制作 Actionscript 应用程序某些部分的“小缩略图”,这些可能是同时由动态文本、位图图形和影片剪辑组成的复杂组合。很高兴做一个“快速快照”并将当前组合像素放入一个位图中,然后能够“保存以供以后使用”。

这可能吗?是不是太容易了?我只是在 Adob​​e Docs 中找错地方了吗?

我们在舞台上同时有图像、矢量等,所以我需要抓取“舞台”对象的位图数据???

【问题讨论】:

  • 希望这会留下一个新的答案来解决最初的问题。 (抱歉再次取消标记第一个答案)
  • 编辑:将重要的一点 BOLD 作为第一个答案并没有解决复杂舞台对象的问题。
  • 解决方案:传递的对象应该是“Stage”类。不是 Sprite,不是 IBitmapDrawable 等。

标签: actionscript-3 bitmapdata


【解决方案1】:

创建一个BitmapData 并使用相应的DisplayObject 调用它的draw() method

var bmpData:BitmapData = new BitmapData(sprite.width, sprite.height, true);
bmpData.draw(sprite);

如果您想缩小缩略图,请创建一个Matrix 并使用所需的缩放参数调用其createBox 方法并将其传递给draw 方法。

var bmpData:BitmapData = new BitmapData(thumbW, thumbH, true);
var mat:Matrix = new Matrix();
mat.createBox(thumbW / sprite.width, thumbH / sprite.height);
bmpData.draw(sprite, mat);

【讨论】:

  • 不错!谢谢!如此合乎逻辑,我几乎知道我一定是失明了:o)太好了!去试试吧!
  • 你介意再帮我一次吗?如果再次正确,我会标记答案。我第一次犯错。对此感到抱歉。
  • 是什么让你不接受这个答案?你试过bmpData.draw(stage);吗?发生了什么?不工作吗?
  • 不,不是在使用舞台时。可能我以某种方式使用了错误的对象类型。公共函数 SaveSnapshot(oCanvas:IBitmapDrawable):void { var snapshot:BitmapData = new BitmapData(oCanvas.width, oCanvas.height, true, 0x00FFFFFF); var cropbox:Rectangle = new Rectangle(0, 0,oCanvas.width,oCanvas.height); snapshot.draw(oCanvas, new Matrix(),null, null,cropbox, false); ... }
  • Oooohh... 刚刚尝试使用“舞台”作为对象类型。我一直在使用“通用”类型的显示对象,以使此快照功能适用于包括舞台对象在内的所有内容。一旦我替换了它并写了“oCanvas:Stage”这行得通,我之前没有看到过,因为 SWF 的背景颜色似乎不会自动成为 SWF 的一部分。它是一个小细节,并不重要。所以我会再次标记这个问题。再次抱歉我的误解!谢谢!!!希望您下次再尝试帮助我;-)
猜你喜欢
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多