gpt4 book ai didi

javascript - RequireJS 一些(不是全部)函数未定义

转载 作者:行者123 更新时间:2023-11-28 02:10:56 25 4
gpt4 key购买 nike

我不确定是否有人能够提供帮助,但就这样吧。我目前正在重构我正在使用 CraftyJS 编写的游戏(一个优秀的基于组件的游戏引擎)使用RequireJS。一切都进行得很顺利,但突然我遇到了障碍。我构建了一个模块,在其中定义了一个小的 Crafty 组件,它基本上只是事件监听的瓶颈。在其中一个回调中,我调用了本地模块中定义的几个函数。我在 RequireJS 中的许多环境中使用过这种模式,而且它总是对我有用。由于某种原因,在这种情况下,某些函数未定义。不是所有的人。一些。这是一些代码:

组件:

Crafty.c("TurnStateMachineObserver", {
startListening: function() {
...
this.bind(POST+PHASE_CHANGE, function(e) {
// this is called after the phase change has already been
// applied. now, switch to the next phase, if appropriate.

var curPhase = currentPhase();
var nextPhase = nextPhase();

if (nextPhase === PHASE_TURN_START)
_triggerPlayerChange(nextPlayer());
else if (curPhase !== PHASE_MAIN)
_triggerPhaseChange(nextPhase());
})
.bind(POST+RESET, function(e) {
reset();
});
},
...
});

对于那些不熟悉 Crafty 的人,Crafty.c 创建一个稍后可以实例化的组件。作为第二个参数传递的对象文字将被附加(扩展?)到任何包含 TurnStateMachineObserver 作为其组件之一的对象(即使用 Crafty.e("TurnStateMachineObserver")).

稍后在同一文件中定义组件内部使用的函数(整个文件包含在 define() 调用中):

//  Function: currentPhase
// The current <Turn Phase>.
function currentPhase() {
if (_currentPhaseIndex < 0) _currentPhaseIndex = 0;
return PHASES[_currentPhaseIndex];
}

// Function: nextPhase
// The phase following the <currentPhase>. Order follows the
// <PHASES> list.
function nextPhase() {
var phaseIndex = _currentPhaseIndex + 1;
phaseIndex %= PHASES.length;

return PHASES[phaseIndex];
}

现在,当触发 POST+PHASE_CHANGE 事件时,在调用 nextPhase() 时会抛出异常,但在调用 currentPhase 时不会抛出异常()!经过一些调试后,我确定,事实上,虽然首次输入 define() 主体时模块中定义的所有函数都已正确定义,但<其中大部分在组件的回调中未定义。事实上,当组件被这样实例化时

if (!_observer)
_observer = Crafty.e("TurnStateMachineObserver");
_observer.startListening();

init 函数(模块返回的函数)中,定义了 nextPhase(),但是如果我进入 _observer.startListening() >,它不是,尽管 currentPhase() 是。啊!我正在把我剩下的头发拉出来盖住这根头发。让我真正困惑的是这些函数是兄弟函数。如何定义更高范围的某些函数,而其他函数则不然?!

最佳答案

哇哦,笨蛋。显然,问题在于我用变量覆盖了函数。当我将其更改为

...
var curPhaseVal = currentPhase();
var nextPhaseVal = nextPhase();
...

突然间一切都正常了。这本来是理所当然的事,但我还是花了一周的时间才找到。哦,好吧,回去工作吧!

关于javascript - RequireJS 一些(不是全部)函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17101275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com