- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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/
我正在尝试使用一些附加功能编写自己的 bool “抽象”。 @forward abstract MyBool(Bool) { public inline function new(b:Bool)
haxe 中是否有某种退出语句?喜欢 import sys sys.exit(0) 在 Python 或 System.exit(0); 在 java ? P.S.:只需要这个用于 sys 目标...
是否可以根据运行时可用的信息将变量转换为另一种类型? 如果我有: interface Foo { } class Bar implements Foo { public function ne
我正在关注使用 Haxe 语言的 HaxeFlixel 教程。现在我没有任何 Haxe 经验,但我决定勇敢学习教程,因为我确实有 Java 和 Haxe 的经验,因为这种语言似乎与 Java 非常相似
我正在尝试使用构建 hxml 文件来编译 Haxe 类,而不定义入口点。 我的文件夹结构如下所示: root | ___src |___Test.hx | ___build.hxml T
对于haxe,我们通常需要使用现有的非haxe代码,因此我们可能希望我们的haxe代码吸收系统的一部分或添加到系统中,而不是编写外部代码,而我们不能假设一个好的haxe设置的系统。 例如,以 js 目
我发现在构建 Haxe 项目时,仅编译从 Main 引用的代码或由在 Main 中间接/直接引用的类引用的代码。如何强制 Haxe 将所有源 .HX 文件编译成目标语言?我试过使用 DCE 标志(no
我想像这样在 Map 中使用函数作为键: var timers : MapVoid, snow.api.Timer>; 但是 Haxe 不会编译: Abstract Map has no @:to f
有人知道一种自动获取 Haxe 项目中未使用类列表的方法吗? 我没有找到有关此的文档,但该信息应该在某处可用。就像消除死代码后的差异。 最佳答案 可以通过 -D dce-debug 编译得到 DCE
Haxe 有没有办法获得 Java 的抽象方法和抽象类的等价物? 我想要的是 // An abstract class. (Written in a Java/Haxe hybrid.) abstr
Haxe 有 trace() ,可用于所有目标以打印内容。 trace("aa"); // Main.hx:89: aa 如何只打印内容,而不打印文件名和行号? 最佳答案 对于 sys 目标(例如 n
我计划在 Haxe 的一个子集中编写 Haxe 库,这些库将编译为每种 Haxe 目标语言。有什么方法可以验证 Haxe 程序是否可以编译为所有目标语言,是否可以在不手动测试每个目标平台上的编译代码的
在Haxe中,有没有脚本或者命令可以自动运行一个多目标语言的Haxe程序?我想编写一个执行以下操作的脚本: 1) 将 Haxe 源代码编译为 JavaScript、C++、PHP 和 Java。 2)
在其他编程语言中,我可以使用 int array[23][23] 来声明每个维度有 23 个元素的二维数组。我如何在 Haxe 中实现同样的目标? 目前我需要这样做: var arr:Array> =
我的 Haxe 构建有多个目标,我必须手动对每个目标进行 c/p 更改。 .hxml 文件可以处理变量吗? 最佳答案 不,但您可以使用 --each 和 --next 减少重复: -main Exam
我想使用 Haxe 导入图像,我的图像很大,但它是 8 位,重 89kb。当我导入它时出现问题,因为内存大小增加了35mb。我想它是为 32 位图像保留内存。知道如何导入 8 位图像而不消耗这么多内存
是否有一个库/类/数据类型来处理 Haxe 中的大数字并且也是平台无关的? 我想做的是一款增量游戏(比如 Clicker Heroes),但我受制于 32 位整数限制。 我在谷歌搜索时发现了一两个类,
我需要防止类 A 在任何地方被实例化,而只能从另一个类 B 实例化,然后类 B 可以返回类 A 的创建实例,该实例可以在任何其他类中使用。 我知道 B 在这个例子中可能是一个工厂,我查看了 Haxe
开发人员可以在生产开发的前端(Web 和桌面)和后端使用 haxe 是真的吗 - 需要源代码 最佳答案 是的,这是真的。 Haxe 可以转换为多种语言,例如 PHP、Javascript、C++、Ja
是否有预定义的 HashSet Haxe 中的类,类似于 s = set() 在 Python 或 import java.util.HashSet; 在 java ? 我知道,我可以简单地使用 ha
我是一名优秀的程序员,十分优秀!