Game Maker JS Extension

时间:2015-03-03 07:51:31

标签: javascript game-maker game-maker-language game-maker-studio-1.4

您好我想将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();
};

有没有人知道如何在游戏制作者中这样做?我不知道要在扩展函数属性中放入什么信息。

谢谢, 米切尔。

1 个答案:

答案 0 :(得分:0)

我建议创建一个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文件将运行并将使用两个回调函数初始化公司对象。

希望这有帮助。