我正在学习一些带有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.8GB的内存,并且运行得非常慢,占用了1863.6 Mb的内存。最终,myText在程序运行慢了大约20秒后消失了,这使得棒子几乎正常地旋转,但仍然占用了相同的内存。即使我加上
if (bonzi.rotation >= 360) bonzi.rotation -= 360;对于更新循环,以确保旋转保持在0;360范围内,同样的事情会发生。
但奇怪的是,如果我更改了任何东西,使myText不改变更新方法中的,那么内存的使用将保持正常(15-30Mb),例如将Std.string(bonzi.rotation)更改为Std.string("Hi")或bozi.rotation += 4更改为bozi.rotation =4。
我不明白为什么会发生这种事。这是非常不方便的,因为我计划在未来大量使用文本字段。
编辑:我的完整代码通过cpp - test通过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);
}
}发布于 2015-06-01 11:50:04
你的代码对我来说似乎不是问题..。
您应该在github存储库中提交一个问题:
https://github.com/openfl/openfl/issues
请包括一个完整的可运行的样本,以便他们更容易采取行动。
https://stackoverflow.com/questions/30506202
复制相似问题