【发布时间】:2014-12-15 15:31:36
【问题描述】:
我目前正在开发一个应用程序,其中将舞台的屏幕截图生成为位图图像,然后将生成的图像添加到应用程序的选项卡中。
我无法向选项卡添加多个屏幕截图图像。应用程序抛出“错误 #3691:超出此资源类型的资源限制”异常。
我发现这个异常是因为没有正确处理纹理而引发的。 在下面的代码中,如果我处理 bufferedTexture,添加到选项卡的图像是空的。
下面是代码:
public function AddtoMediaTab():void
{
var buffer:BitmapData;
buffer = GetStageAsBitmapData();
var bufferedTexture:Texture = Texture.fromBitmapData(buffer);
this.image.source = bufferedTexture;
buffer.dispose();
buffer = null;
//bufferedTexture.dispose();
//bufferedTexture = null;
}
public function GetAsBitmapData():BitmapData
{
var buffer:BitmapData = new BitmapData(this.width,this.height, false, 0x000000);
this.media.DrawToBitmap(buffer);
return buffer;
}
感谢任何帮助。
谢谢
【问题讨论】:
-
所以你知道如何用八哥处理纹理......你的问题是?
-
图片尺寸可能太大了,你的舞台有多大?显然处理它会删除它,所以图像当然不会出现。
-
@BennettYeates:我的舞台尺寸是 1920x1080。有什么办法可以缩小图像的大小然后保存吗?
-
@BotMaster:对不起,如果我不清楚我的问题。当我处理纹理时,图像是空的。那么在将图像添加到选项卡之前有什么方法可以减小图像的大小?目前图像的大小为 1920x1080,我正在使用 ImageLoader 在选项卡中显示图像。
-
通过 Stage3D 显示的任何内容(如八哥)都必须上传到图形卡才能显示。因此,如果您需要显示它,则根本无法处理它。您只能在不再需要它时将其丢弃。当然,上传到 GPU 是有限制的,一旦达到限制,您要么会收到资源限制错误,要么会在移动设备上崩溃。您是负责管理该部分的编码人员,并确保在任何时候都只上传您真正需要的内容,而处理您不需要的内容。
标签: apache-flex air starling-framework actionscript-3