Расширение Game Maker JS

Привет! Я хочу добавить функции javascript к создателю игры, но их формат такой:

companyname.initialize({ 
    soundMuteCallback: muteSound,           // optional
    soundUnmuteCallback: unmuteSound        // optional
});

И в файле они выглядят так

this.initialize = function(params) {
    companyname.getSharedEventCenter().postEvent(SharedEventKeys.API_INITIALIZE);

    _isInitialized = true;

    if (typeof params !== "undefined") {
        var muteSoundCallback = ("soundMuteCallback" in params && typeof params["soundMuteCallback"] === "function") ? params["soundMuteCallback"] : undefined;
        var unmuteSoundCallback = ("soundUnmuteCallback" in params && typeof params["soundUnmuteCallback"] === "function") ? params["soundUnmuteCallback"] : undefined;
        _adsManager.setSoundCallbacks(function() {
            typeof muteSoundCallback === "function" && muteSoundCallback();
            [].forEach.call(document.getElementsByTagName("audio"), function(element){
                element.muted = true;
            });
        }, function() {
            typeof unmuteSoundCallback === "function" && unmuteSoundCallback();
            [].forEach.call(document.getElementsByTagName("audio"), function(element){
                element.muted = false;
            });
        });
    }

    _tryShowAd();
};

У кого-нибудь есть идеи, как это сделать в Game Maker? Я не знаю, какую информацию поместить в свойствах функции расширения.

Спасибо, Митчелл.

1 ответ

Решение

Я бы порекомендовал создать новую функцию, которую Game Maker сможет понять, а затем использовать ее для создания вашего объекта и конструктора, который вы здесь показываете.

company.initialize = function(params) {
    companyname.getSharedEventCenter().postEvent(SharedEventKeys.API_INITIALIZE);

    _isInitialized = true;

    if (typeof params !== "undefined") {
        var muteSoundCallback = ("soundMuteCallback" in params && typeof params["soundMuteCallback"] === "function") ? params["soundMuteCallback"] : undefined;
        var unmuteSoundCallback = ("soundUnmuteCallback" in params && typeof params["soundUnmuteCallback"] === "function") ? params["soundUnmuteCallback"] : undefined;
        _adsManager.setSoundCallbacks(function() {
            typeof muteSoundCallback === "function" && muteSoundCallback();
            [].forEach.call(document.getElementsByTagName("audio"), function(element){
                element.muted = true;
            });
        }, function() {
            typeof unmuteSoundCallback === "function" && unmuteSoundCallback();
            [].forEach.call(document.getElementsByTagName("audio"), function(element){
                element.muted = false;
            });
        });
    }

    _tryShowAd();
};

function createMuteCallback() {
    muteCallback = function () {
        // Code to handle the callback
    }
    return muteCallback;
}

function createUnmuteCallback() {
    unmuteCallback = function () {
        // Code to handle the callback
    }
    return unmuteCallback;
}

function createCompany (mute, unmute) {
    if (mute == 1) {
        soundMuteCallback.createMuteCallback();
    }

    if (unmute == 1) {
        soundUnmuteCallback.createUnmuteCallback();
    }

    company.initialize(soundMuteCallback, soundUnmuteCallback);
}

Так что все это идет в одном файле.js. Создайте новое расширение в Game Maker. Добавьте файл.js к этому расширению. Добавьте функцию с именем createCompany с двумя необязательными параметрами.

Затем при вызове createCompany(1, 1); в вашем коде Game Maker будет запущен файл.js, который инициализирует объект компании с помощью двух функций обратного вызова.

Надеюсь это поможет.

Другие вопросы по тегам