106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2

И снова секундомер

09.12.2011, 08:57. Показов 3748. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу игру на яваскрипт, при нажатии на кнопку "Новая игра" запускается секундомер. Взял код с форума by ostgals
JavaScript
1
2
3
4
5
6
7
8
function start_timer()  {
      End=0; secs = 0;
      document.getElementById('timer').innerHTML = secs + ' сек.';
      if (timer) clearInterval(timer); 
        var timer = setInterval( function () {
               if (End==1) return; secs++; 
              document.getElementById('timer').innerHTML = secs + ' сек.'; },  1000
                                       );  }
После успешного завершения игры таймер останавливается с помощью
JavaScript
1
End=1;
Все работает. Проблема в том, что если юзер несколько раз нажмет кнопку "Новая игра" (чтобы может выбрать начальную комбинацию поприятнее), секундомер начинает скакать как бешенный. Видимо, переменная secs получает пинки от нескольких функций. Как решить эту проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2011, 08:57
Ответы с готовыми решениями:

Секундомер(и только секундомер).
Да,я в гугле рылся,и там всё в усложнённом варианте.Мне нужно только по простому,поскольку я в JS только 2 день.вот я написал,но не...

аналоговый секундомер
Помогите написать HTML страницу с Javascript кодом: По нажатию кнопки старт запускает аналоговый таймер с минутной и секундной стрелкой,...

Секундомер для игры
Добрый день) Помогите, пожалуйста, кому несложно) Очень нужен код секундомера на javascript для "Пятнашек". То есть чтобы...

3
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
12.12.2011, 10:36
Объявите переменную timer до функции, в глобальном пространстве имён.
0
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
12.12.2011, 10:52  [ТС]
Ага, спасибо, мне уже подсказали на другом форуме
0
38 / 38 / 6
Регистрация: 16.11.2011
Сообщений: 112
12.12.2011, 13:32
Если интересно написание браузерных игр - могу подсказать некие парадигмы.
Так как у вас тут правильней сделать стек объектов.
А таймер будет выключаться когда не надо и запускаться когда надо)))) И один раз)))

Добавлено через 3 минуты
для своей последней игры писал вот такой:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
   * Global Timer
   */
  var Timer = function(){
    var stack = [],
        timer = null,
        tm    = this;
    
    //Start timer
    this.start = function(object){
      
      //Check for the same object in array
      var match = 0;
      if( stack.length == 0 ) stack.push(object);
      
      //If there is no object with same name then push it to stack array
      for( var i = 0; i < stack.length; i++ ){
        if( stack[i].name == object.name ) match = 1;
        if( i == stack.length - 1 && match == 0 ) {
          stack.push(object);
        };
      };
      
      //Call functions from stack array
      if( timer == null ){
        timer = setInterval(
          function(){
            if( stack.length == 0 ){
              tm.stop(); 
              timer = null;
            };
            for( var i = 0; i < stack.length; i++ ){
              if( stack[i].action() == false ) stack.splice(i,1);
            };
          },Base_Data.timer
       );
      };
    };
    
    //Find and remove object
    this.removeObject = function(object){
      for( var i = 0; i < stack.length; i++ ){
        if( stack[i].name == object ) stack.splice(i,1);
      };
    };
    
    //Stop timer
    this.stop = function(){
      clearInterval(timer);
    };
  };
Конечно John Resig советует использовать объект для хранения. Но в принципе производительность сильно не подпрыгнет.

А ну и конечно создание самого объекта таймера:

JavaScript
1
var TimerObject = new Timer();
и добавление экшена:

JavaScript
1
2
3
4
5
TimerObject.start({
      "name":"mousemoving",
      "action":th_map.MouseMove,
      "type":false
});
Последнее свой-во type уже не обязательно просто скопировал кусок кода)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2011, 13:32
Помогаю со студенческими работами здесь

Секундомер на сайте (скрипт, код и т.д.) Как сделать?:)
Друзья, а как сделать секундомер (просто счётчик) на сайте (какой скрипт или код) чтобы можно задать время отчета и также можно было время,...

И снова калькулятор )
Здравствуйте! Может кто cможет помочь, написать максимально простой скрип под этот калькулятор: &lt;body&gt; &lt;div...

Секундомер с одной кнопкой
Здравствуйте. Задача: сделать секундомер с одной кнопкой. Решение: &lt;div id=&quot;stopwatch&quot;&gt; &lt;h4&gt;&lt;time...

Создать секундомер формата 00:00:00, с кнопками старт, стоп, сброс
Нужно создать секундомер формата 00:00:00, с кнопками старт, стоп, сброс. Объясните, пожалуйста в чём ошибка. &lt;!DOCTYPE html&gt; ...

Снова зависимые списки
Здравствуйте, форумчане. подскажите как реализовать: есть два связанных списка, накидал тут по быстрому: &lt;select...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки на предмет заполнения реквизитов реализован с целью установки значения по умолчанию,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru