gpt4 book ai didi

c++ - Haxe/openfl 文本字段内存泄漏

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:16 26 4
gpt4 key购买 nike

我正在使用 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 内存。最终,在程序运行非常慢大约 20 秒后,myText 消失了,这使得 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);
}
}

最佳答案

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

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

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

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

关于c++ - Haxe/openfl 文本字段内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com