Tizi
@Tizi
гуру программист ( no )

Как вызвать функцию внутри функции?

как вызвать функцию goUser которая находится в функции start_game ?
Скрин

5aec51c67cb23673554856.png

код

$(document).ready(function() {
	////////
	// переменные
	////////

	var startGame = 0;

	////////
	// События 
	////////

	$('.btn_start').on('click', start_game );
	$(document).on('keydown', goUser);

	////////
	// Начало игры 
	////////

	function start_game(event) {
		
		if( $('.user_name').val() != '') {

			startGame = 1;

			$('.start_game_box').addClass('hidden');
			$('.user').removeClass('hidden');

			if (startGame = 1) {
				function goUser(event) {

					///////
					// Определяем текущие коардинаты персонажа
					///////

					var pz_user = $('.user').offset(),
					top = pz_user['top'],
					left = pz_user['left'];

					///////
					// Вверх
					///////

					if (event.which === 38) {
						var top = top -5;
						$('.user').css('top', top + 'px')
					}

					///////
					// Вниз
					///////

					if (event.which === 40) {
						var top = top +5;
						$('.user').css('top', top + 'px')
					}

					///////
					// В лево
					///////

					if (event.which === 37) {
						var left = left -5;
						$('.user').css('left', left + 'px')
					}

					///////
					// В право
					///////

					if (event.which === 39) {
						var left = left +5;
						$('.user').css('left', left + 'px')
					}
				}
			}

		} else {
			$('.errors').html('<p class="errors_p">Введите имя!</p>');
		}
	}
});



P.s: Вообще правильным решением будет вызывать ее так /?
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
JimmDiGreez
@JimmDiGreez
Full-stack Developer
Очень вероятны ошибки с this, давно очень на js не писал.

$(document).ready(function() {
  var Game = {
    isGameStarted: false,
    start: function(event) {
      // для этого метода нужна блокировка, но и так сойдет пока.
      if (true == this.isGameStarted) {
        return;
      }

      if ($('.user_name').val() == '') {
        $('.errors').html('<p class="errors_p">Введите имя!</p>');
        return;
      }

      this.isGameStarted = true;

      $('.start_game_box').addClass('hidden');
      $('.user').removeClass('hidden');

      $(document).keydown(this.goUser);
    },
    goUser: function(event) {
      if (false == this.isGameStarted) {
        return;
      }

      var pz_user = $('.user').offset(),
      top = pz_user['top'],
      left = pz_user['left'];

      if (event.which === 38) {
        var top = top -5;
        $('.user').css('top', top + 'px')
      }

      if (event.which === 40) {
        var top = top +5;
        $('.user').css('top', top + 'px')
      }

      if (event.which === 37) {
        var left = left -5;
        $('.user').css('left', left + 'px')
      }

      if (event.which === 39) {
        var left = left +5;
        $('.user').css('left', left + 'px')
      }
    }
  };

  $('.btn_start').on('click', Game.start);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vaajnur
битриксоид
мог бы и код скинуть. где вызов goUser то происходит?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы