как определить переменную в классе и передать ее в функцию - PullRequest
0 голосов
/ 23 сентября 2019

Итак, я пишу сценарий для компьютерной игры Counter Strike: Global Offensive, который меняет игру игроков на перекрестие.язык, используемый игровыми движками, называется Vscript.Vscript не очень хорошо документирован, единственная документация, которую я мог оштрафовать, это длинный список функций .Но после пробной ошибки я обнаружил, что синтаксис почти идентичен JavaScript, с единственной реальной разницей в том, что в языке есть специальные функции, такие как SetHealth или GetTeam, например, которые специфичны для игры и не существуют в JavaScript.

class crosshair_generator {
    // Initialize
    crosshair_hidden = false;

    function hideCrosshair() {
        if (crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            self.crosshair_hidden = false;

        } else if (crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            crosshair_hidden = true;

        }
    }

    function CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
} 

когда я открываю игру и запускаю скрипт, внутри игровой консоли выдается

AN ERROR HAS OCCURED [the index 'crosshair_generator' does not exist]

CALLSTACK
*FUNCTION [main()] InputRunScript line [1]

LOCALS
[this] TABLE
 Entity script_crosshair encountered an error in RunScript()

Если я определяю переменную crosshair_hidden внутри функции hideCrosshair () crosshair_hidden = false;, то каждый разя вызываю функцию, значение которой будет ложным.мне нужно, чтобы он был определен вне функции, чтобы к переменной могли обращаться другие функции, такие как CrosshairAlpha(), и чтобы значение переменной не было одинаковым каждый раз, когда я вызываю функцию.

Так какВы определяете переменную в классе в JavaScript, а затем передаете эту переменную в функцию?

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете инициализировать properties в методе построения и обращаться к ним позже, используя this:

class crosshair_generator {
    // Initialize
    constructor(crosshair_hidden = false) {
        this.crosshair_hidden = crosshair_hidden;
    }

    hideCrosshair() {
        if (this.crosshair_hidden == true) {
            // Hide the crosshair 
            SendToConsole("crosshair 0");
            printl("crosshair hidden!");
            this.crosshair_hidden = false;

        } else if(this.crosshair_hidden == false) {
            // Show the crosshair
            SendToConsole("crosshair 1");
            printl("crosshair shown!")
            this.crosshair_hidden = true;

        }
    }

    CrosshairAlpha(Add) {
        // cl_crosshairalpha
    }
} 
...