Неизвестный идентификатор при использовании функции?

В player.hx:

public function new(X, Y, _upKey:String, _downKey:String){
    super(X, Y);

makeGraphic(20, 20, FlxColor.RED);

immovable = true;
}

В PlayState.hx:

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

    add(new Enemy(300, FlxG.height - 20, 10, 20));
    add(new Enemy(500, FlxG.height - 40, 10, 40));

    add(player = new Player(60, FlxG.height - 40, "UP", "DOWN"));
}

Он возвращается ко мне с ошибками "Неизвестный идентификатор: upKey" и "Неизвестный идентификатор: downKey" в файле Player.hx, даже после того, как я уже установил их в функции. Как это исправить?

1 ответ

Решение

Аргументы функции доступны только в этой конкретной функции (это называется областью действия переменной) - просто потому, что у вашего конструктора есть аргументы с именем upKey а также downKey, это не значит, что вы также можете автоматически использовать их в другой функции, такой как update(),

Чтобы сделать это, вам нужно сохранить аргументы в переменных-членах Player учебный класс:

class Player extends FlxSprite
{
    var upKey:String;
    var downKey:String;

    public function new(X, Y, upKey:String, downKey:String)
    {
        super(X, Y);
        this.upKey = upKey;
        this.downKey = downKey;
    }

    override public function update():Void
    {
        super.update();
        trace(upKey, downKey);
    }
}
Другие вопросы по тегам