开发者问题收集

Phaser 的范围问题 - 使用声音

2016-04-25
67

在函数内部工作时,我无法停留在范围内。引用正确范围以访问 soundManager 的最佳方法是什么?

未捕获的 TypeError:无法设置未定义的属性“game”

在此行 console.log('SCOPE: ' + MyGame.Game.sound.mute);

$(".audiotoggle").click(function() {
            if (MyApp1.gameMuted === false) {
                MyApp1.gameMuted = true; //(angular vars)
                console.log('MUTE: TRUE (audiotoggle * TRIGGER)');
                audtioToggleFunc();
            } else {
                MyApp1.gameMuted = false; //(angular vars)
                console.log('MUTE: FALSE (audiotoggle * TRIGGER)');
                audtioToggleFunc();
            }
        });

        var audtioToggleFunc = function () {
            console.log('SCOPE: ' +  MyGame.Game.sound.mute);
            console.log('AUDIO TOGGLE');
            if (MyApp1.gameMuted === true) {
                MyGame.Game.sound.mute = false;
                console.log('MUTE: FALSE (audiotoggle * Function)');
            } else {
                MyGame.Game.sound.mute = true;
                console.log('MUTE: TRUE (audiotoggle * Function)');
            }
        };
        audtioToggleFunc();
1个回答

我认为这更像是一个 jquery 问题。您应该使用:

$(".audiotoggle").click(
    $.proxy(function () {
        //your listener code
    }, this)
);
Hamdi Douss
2016-06-01