В состоянии helm
, когда вы устанавливаете коэффициент деформации и нажимаете кнопку включения, он вызывает engage
, который испускает необходимые данные. Сервер получает это, определяет, активны или нет инерционные демпферы, либо испускает 'warpFailed'
, либо обновляет коэффициент деформации. В app.js
получен исходный код сервера и обновлен globalGame.warpFailed
. В состоянии captain
проверяется globalGame.warpFailed
.Глобальная переменная Не обновляется во всех состояниях Phaser
Проблема заключается в том, что в состоянии helm
globalGame.warpFailed
правильно зарегистрирован на консоли и отражает правильное состояние. В состоянии captain
он постоянно регистрирует false
независимо от того, что это за значение.
Я честно даже не уверен, что код, чтобы показать, но здесь все, что я могу думать:
server.js:
socket.on('warp', function (data) {
if (serverGameData.helm.inertDampeners) {
socket.emit('warpFailed');
} else {
serverGameData.helm.warpFactor = data.helm.warpFactor;
}
});
app.js состояние
var socket = io(),
globalGame = {
sfx: {
effects: null,
intro: null,
menuBoot: null,
impulse: null,
warp: null
},
warpFailed: false
}
/* LOTS OF IRRELEVANT CODE HERE - NONE OF WHICH TOUCHES THE ABOVE DECALRED */
socket.on('warpFailed', function() {
globalGame.warpFailed = true;
});
штурвалом (это ТОЛЬКО место, на которое оно ссылается в этом состоянии, и это правильно регистрирует значение изменения на консоли):
update() {
console.log(globalGame.warpFailed);
}
engage() {
// Called by a button press in this state
globalGame.sfx.effects.play("launch_02", 1);
socket.emit('warp', {
helm: {
warpFactor: this.warpNum
}
});
}
состояние капитана (это также ТОЛЬКО место, на которое оно ссылается в этом состоянии. Он постоянно регистрирует false
к консоли):.
update() {
console.log(globalGame.warpFailed);
}
Есть ли какая-то логика ошибки я делаю здесь или что-то очевидно, что я не хватает? Я проверил и повторно проверил, и это ТОЛЬКО области, которые имеют доступ или имеют какое-либо отношение к globalGame.warpFailed
.
Я почти уверен, что это связано с установкой значения внутри анонимной функции и областью определения переменных в JavaScript. Не знаю решения, извините. – BdR
Вы объявляете свой 'globalGame' var внутри состояния? – jolmos