首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何移动HaxeFlixel FlxNapeSprite?

如何移动HaxeFlixel FlxNapeSprite?
EN

Stack Overflow用户
提问于 2015-07-09 16:45:01
回答 1查看 373关注 0票数 2

我正在尝试在HaxeFlixel中使用Nape。遗憾的是,几乎没有关于如何使用addons.nape包的文档,我只是不知道为什么这段代码没有移动白色矩形(_test)。(为了简单起见,我省略了导入)

代码语言:javascript
复制
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();
    }   
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 18:15:43

您的代码有两个问题:

  1. 直接初始化_test变量将导致FlxNapeSprite构造函数调用发生在PlayState的构造函数中。在状态构造函数之后调用create()。这可能导致崩溃和其他奇怪的行为,因为Flixel在新状态的构造函数调用和create()之间执行内部清理(例如,处理图形,在本例中,由于Nape Space实例是在super.create()调用中创建的,因此它还不存在)。
  2. FlxNapeSprite构造函数有一个createRectangularBody参数,默认为true,并调用同名的函数if true。因为您没有将任何资产传递给构造函数,所以它最终创建了宽度和高度为0的Shape。这将导致以下错误: Error: Cannot simulate with an invalid Polygon 相反,您需要在createRectangularBody()之后手动调用makeGraphic(),以创建与图形尺寸匹配的Shape

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

代码语言:javascript
复制
package;

import flixel.addons.nape.FlxNapeSprite;
import flixel.addons.nape.FlxNapeState;

class PlayState extends FlxNapeState
{
    override public function create():Void
    {
        super.create();

        var _test = new FlxNapeSprite(16, 16);
        _test.makeGraphic(16, 16);
        _test.createRectangularBody();
        _test.body.velocity.x = 100;
        add(_test);
    }
}

关于文档,FlxNape演示是一个很好的学习资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31323591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档