【问题标题】:Dispose a texture in as3 Starling在 as3 Starling 中处理纹理
【发布时间】: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


【解决方案1】:

您可以尝试更改渲染配置文件。直接来自 Starling API 文档:

starling.core.Starling API

Context3D 配置文件

Stage3D 支持不同的渲染配置文件,并且 Starling 与他们一起工作。 Starling 的最后一个参数 构造函数允许你选择你想要的配置文件。下列 配置文件可用:

  • BASELINE_CONSTRAINED:提供最广泛的硬件范围。如果你 为浏览器开发,这是您应该使用的配置文件。
  • BASELINE:推荐用于任何移动应用程序,因为它允许 Starling 使用内存效率更高的纹理类型 (RectangleTextures)。它 还支持更复杂的 AGAL 代码。
  • BASELINE_EXTENDED:添加支持 对于高达 4096x4096 像素的纹理。这在 具有非常高分辨率的移动设备。

建议是 使用配置文件“auto”部署您的应用程序(这使得 Starling 选择 这三个中最好的),但在所有可用的配置文件中进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2013-05-30
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2015-02-06
    相关资源
    最近更新 更多