0

我刚刚完成将我的 HaxeFlixel 安装更新到 3.3.0,在解决了所有其他升级更改之后,我仍然遇到一个错误,我找不到任何解释。我在构成我的背景元素scrollFactor的 s 上设置属性FlxSprite,并且在 3.3.0 之前没有问题。我似乎找不到任何对该属性的引用随更新而变化。

这是我设置属性的相关代码:

//Setup bg
var bg:FlxSprite;
var scrollFactor:FlxPoint;
for (i in 0...loader.bgArray.length){
    bg = new FlxSprite(0, 0, loader.bgArray[i][0]);
    scrollFactor = new FlxPoint(
        Std.parseFloat(loader.bgArray[i][1]),
        Std.parseFloat(loader.bgArray[i][2]));
    bg.scrollFactor = scrollFactor;
    add(bg);
}

这是我从 haxelib 列表中的输出:

flixel:[3.3.0]
hxcpp:[3.1.30]
石灰工具:[1.4.0]
石灰:[0.9.7]
openfl-html5:[1.4.0-beta]
openfl-native:[1.4.0]
openfl 样本:[1.3.0]
openfl:[1.4.0]

当我使用上面的代码片段在我的项目文件夹中运行石灰测试闪存时,我得到:

source/PlayState.hx:54:字符 3-33:无法访问字段或标识符 scrollFactor 进行写入

第 54 行是我设置的行bg.scrollFactor

4

1 回答 1

3

我不确定有关此更新的通知,但实际上目前的情况是scrollFactor访问者是(default, null),因此您不可能像那样设置它。

这也不是最合适的方法,因为在 HaxeFlixel 中FlxPoint可以并且大部分应该被池化,所以你通常会使用 not new FlxPoint(x, y),但这FlxPoint.get(x, y)会使你的代码运行得更快。

无论如何,根据您目前的情况,只需使用

bg.scrollFactor.set(
  Std.parseFloat(loader.bgArray[i][1]),
  Std.parseFloat(loader.bgArray[i][2])
);

代替

scrollFactor = new FlxPoint(
  Std.parseFloat(loader.bgArray[i][1]),
  Std.parseFloat(loader.bgArray[i][2])
);
bg.scrollFactor = scrollFactor;

它将完美地工作(并且更快)。

于 2014-04-25T09:10:39.933 回答