如何移动HaxeFlixel FlxNapeSprite?

时间:2015-07-09 16:45:02

标签: haxe haxeflixel nape

我正在尝试将Nape与HaxeFlixel一起使用。遗憾的是,几乎没有关于如何使用addons.nape包的文档,我只是无法弄清楚为什么这段代码没有移动白色矩形(_test)。 (为简单起见,我省略了进口)

class PlayState extends FlxNapeState
{
    var _test = new FlxNapeSprite(16, 16);

    override public function create():Void
    {
        super.create();

        _test.makeGraphic(16, 16);
        _test.body.type = BodyType.KINEMATIC;
        add(_test);
    }

    override public function update():Void
    {
        _test.body.velocity.x = 100;
        super.update();
    }   
}

1 个答案:

答案 0 :(得分:2)

您的代码存在两个问题:

  1. 直接初始化_test变量会导致在FlxNapeSprite的构造函数中发生PlayState构造函数调用。在状态构造函数之后,create()被称为。这可能会导致崩溃和其他奇怪的行为,因为Flixel在新状态的构造函数调用之间进行内部清理create()(例如,图形处理,在这种情况下是Nape { {1}}实例尚未存在,因为它是在Space调用中创建的。

  2. super.create()构造函数有一个FlxNapeSprite参数,默认为createRectangularBody,如果true则调用相同名称的函数。由于您没有将任何资产传递给构造函数,因此最终会创建宽度和高度为0的true。这会导致以下错误:

    Shape

    相反,您需要在Error: Cannot simulate with an invalid Polygon之后手动调用createRectangularBody()来创建与图片尺寸相匹配的makeGraphic()

  3. 完整的工作代码如下所示:

    Shape

    关于文档,FlxNape demo是一个值得学习的好资源。