我正在用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
请提供完整的可运行示例,以便他们更轻松地采取行动。