为什么这个标签没有出现在HaxePunk中?

时间:2014-01-25 23:08:38

标签: user-interface flash graphics haxe haxepunk

我开始学习HaxePunk,我已经浏览了他们网站上的基本教程。所以现在我试图找出如何在屏幕上添加某种标签。我注意到,看起来他们唯一一个名为“Label”的开箱即用的类看起来只是一个调试工具,而不是你想要的生产中的东西所以我搜索并找到了关于在FlashPunk中制作标签的链接: http://flashgamedojo.com/wiki/index.php?title=Text_%28FlashPunk%29

本质上,它只是将一个非常基本的Text对象分配给实体的图形属性。所以现在这是我的代码,它是由教程代码提供的:

GameScene.hx:

class GameScene extends Scene
{   
    public function new()
    {
        super();
    }

    public override function begin()
    {
        //add(new Block(30, 50));
        //add(new Player(100, 100));
        //add(new Ship(200, 200));
        //spawn();
        add(new Disclaimer(200, 200));
    }

Disclaimer.hx:

package graphics;

import com.haxepunk.Entity;
import com.haxepunk.graphics.Text;

class Disclaimer extends Entity
{
    public function new(x:Float, y:Float) 
    {
        super(x, y);
        var lbl = new Text("This is a disclaimer.");
        //lbl.color = 0xFFFFFF;
        graphic = lbl;
    }   
}

我看到屏幕上没有添加任何内容。当我尝试取消注释GameScene.hx中关于添加新Block的行时,我能够看到一个块被添加:

Block.hx:

package entities;

import com.haxepunk.Entity;
import com.haxepunk.graphics.Image;
import com.haxepunk.utils.Input;
import com.haxepunk.utils.Key;

class Block extends Entity
{
    public function new(x:Int, y:Int)
    {
        super(x, y);
        graphic = new Image("graphics/block.png");
    }

    public override function update()
    {
        if (Input.check(Key.LEFT))
        {
            moveBy(-2, 0);
        }

        if (Input.check(Key.RIGHT))
        {
            moveBy(2, 0);
        } 
        super.update();
    }
}

Disclaimer.hx有什么问题?感谢。

2 个答案:

答案 0 :(得分:0)

该代码似乎对我有用

我使用openfl版本1.2.1和haxepunk 2.4.5使用haxelib run haxepunk new test创建的新项目

我试过html5,flash和neko,并且它在所有这些中都有效。

尝试查看问题是否与openfl / haxepunk的版本有关,这可能是一个已经修复的错误

答案 1 :(得分:0)

我假设您已经在GameScene.hx中导入了该类?添加:

import entities.Disclaimer;

高于GameScene定义?