AS3 TextField和TextFormat内存泄漏"其他位图内存"

时间:2014-04-24 14:08:09

标签: actionscript-3 flash memory-leaks air adobe-scout

在编程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 个答案:

答案 0 :(得分:2)

正如您所说,嵌入字体将解决此问题。在我使用as3的所有时间里,我只遇到过两个诚实到善的错误,实际上阻止我做代码应该做的事情。两者都以非常模糊的方式涉及文本字段和字体操作。

答案 1 :(得分:0)

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

renderMode 似乎也对此问题产生了影响:

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

当渲染模式设置为自动(默认)时,内存只会在应用处于全屏模式时增加。

如果您将其设置为直接,则无论该应用是否为全屏,它都会一直增加。

在renderMode gpu 上,它也会一直增加。

改变火花中的特定标志"标签" 可能最终阻止内存增加,但它太宽泛而无法缩小内存。