【问题标题】:Haxe/openfl textfield memory leakHaxe/openfl 文本字段内存泄漏
【发布时间】:2015-05-28 12:10:14
【问题描述】:

我正在使用 openfl 学习一些 Haxe,并将图像和文本添加到屏幕上。

我首先通过命令行使用openfl创建一个项目,添加了一个更新帧事件监听器,使用图片和文字

addChild(myText);
stage.addEventListener(Event.ENTER_FRAME, update);
bonzi = new Bitmap(Assets.getBitmapData("assets/bonzi.jpg"));
addChild(bonzi);

在我输入的 update() 方法中:

bonzi.rotation += 4;
myText.text = bonzi.rotation;

这就像预期的那样工作,bonzi.jpg 围绕左上角旋转,并在同一个角落显示旋转的文本字段。

现在的问题是:如果我让它运行约 30 秒,程序会占用我 1.8 Gb 的内存,然后运行非常缓慢,现在正好占用 1863.6 Mb 的内存。最终 myText 在程序运行非常慢约 20 秒后消失了,使 bonzi 几乎正常旋转,但仍占用相同数量的内存。就算我加了

if (bonzi.rotation >= 360) bonzi.rotation -= 360;

到更新循环以确保旋转保持在 [0;360] 范围内,同样的事情会发生。

但奇怪的是,如果我更改任何内容以使 myText 不会在更新方法中 更改 内存使用保持正常 (15-30 Mb) 例如将 Std.string(bonzi.rotation) 更改为 Std.string("Hi") 或 bozi.rotation += 4 更改为 bozi.rotation = 4。

我不知道为什么会发生这种情况。这很不方便,因为我计划在未来大量使用文本字段。

编辑:我的完整代码通过 cpp - 测试通过 openfl 运行

package;

import openfl.display.Sprite;
import openfl.display.Bitmap;
import openfl.Assets;
import openfl.text.TextField;
import openfl.events.Event;
import openfl.system.System;

class Main extends Sprite {

    public var bonzi:Bitmap;
    public var myText:TextField = new TextField();

    public function new() {
        super();

        addChild(myText);
        stage.addEventListener(Event.ENTER_FRAME, update);

        bonzi = new Bitmap(Assets.getBitmapData("assets/bonzi.jpg"));
        addChild(bonzi);
        bonzi.rotation = 260;
        myText.text = Std.string(bonzi.rotation);
    }


    public function update(e:Event):Void {
        bonzi.rotation += 4;
        if (bonzi.rotation >= 180) bonzi.rotation -= 360;

        myText.text = Std.string(bonzi.rotation);
    }   
}

【问题讨论】:

  • 有趣。您能否提供您正在测试的确切代码?

标签: c++ memory-leaks textfield haxe openfl


【解决方案1】:

你的代码对我来说似乎不是问题......

您应该在 github 存储库中提交问题:

https://github.com/openfl/openfl/issues

请提供完整的可运行示例,以便他们更容易采取行动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2012-08-08
    • 2013-11-30
    • 2014-06-10
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多