【问题标题】:Game Maker JS Extension游戏制作者 JS 扩展
【发布时间】:2015-03-03 07:51:31
【问题描述】:

您好,我正在寻找向游戏制作器添加 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();
};

有没有人知道如何在游戏制作者中做到这一点?我不知道该在扩展函数属性中添加什么信息。

谢谢, 米切尔。

【问题讨论】:

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


    【解决方案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 文件将运行并使用两个回调函数初始化公司对象。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多