AS3的TextField和TextFormat存在内存泄漏问题,会导致“其他位图内存”消耗增加。

5
我在编写 AS3 时遇到了内存泄漏问题。我试图在 AS3 中格式化文本,并将其添加到舞台上,但发生了一些奇怪的事情。以下是我的代码的一部分:
var format:TextFormat = new TextFormat();
        format.size = 60;

        var t:TextField = new TextField();
        t.autoSize = TextFieldAutoSize.LEFT;
        t.text = "WWWWWWWWWWWWWWWW";
        t.setTextFormat(format);
        t.scaleX = 1;
        t.scaleY = 1;

        this.addChild(t);

我将此文本框添加到我的舞台上,并使用Adobe Scout CC检查内存使用情况时,“其他位图内存”显示正常,表现良好。
但是...
当我运行此代码并向文本中添加一个大写字母W时,“其他位图内存”变得非常疯狂。
疯狂的事情是,当我向文本中添加字母I时,它就正常运行。
我认为这与字体的宽度或大小有关。增加字体大小会导致相同的问题。
有人知道如何解决这个问题吗?
我正在使用Adobe Flash Builder 4.7和Adobe Scout CC。

2
我使用嵌入式字体修复了它,但这是一种奇怪的内存泄漏。 - jeroenmuller
你的修复也帮助了我们。 - Stan Reshetnyk
2个回答

2

就像您所说的一样,嵌入字体将解决此问题。在我使用AS3的所有时间里,我只遇到了两个真正的错误,这些错误会阻止代码实现应有的功能。这两个错误都涉及非常模糊的文本字段和字体操作。


0

我刚刚遇到了同样的问题,Scout 显示的其他位图内存奇怪地增加并且从未返回。

renderMode 似乎也会影响此问题:

在应用程序描述符 XML 文件中将渲染模式设置为 cpu 可以防止内存增加。

当呈现模式设置为自动(默认)时,内存仅在应用程序处于全屏模式时增加。

如果将其设置为直接,则无论应用程序是否全屏,内存都会增加。

在 renderMode gpu 下,它也总是会增加。

更改 spark “Label” 中的特定标记可能最终可以防止内存增加,但这太广泛了,无法缩小范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接