Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймеры и уничтожение объектов. 
:(
    Опции темы
PsiMagistr
Дата 26.3.2019, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Ребята, как JS уничтожает свои объекты? Я создал класс и одно из полей является тикающим таймером. Сразу после создания объекта этот таймер начинает тикать в нем. Дотикивает до нужного мне значения и очищается clearTimeout. Сами же мои объекты создаются через другой таймер в программе.

Код

 setTimeout(function () {
                setEgg();
            }, 2000);



Не будет ли утечек памяти при этом? Не останутся ли висеть мертвые объекты?


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ksnk
Дата 26.3.2019, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



PsiMagistr, В приведенном коде нет переменных, и нечему утекать.

Добавлено через 2 минуты и 59 секунд
setTimeout - функция, которая тикнет не более одного раза. До тех пор, пока она не сработает - ответственная за функцию setEgg область видимости не будет удалена. Также не будут удалены все ее собственные переменные


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PsiMagistr
Дата 26.3.2019, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Спасибо.

Вод полный код описания объекта. (класса) Там рекурсивный вызов сеттаймаут.

Код

function Egg(eggs){
   var that = this;
   var step = 0;
   this.timer;

   this.setStep = function() {
       if (pause == false) {
           if (step == 0) {
               eggs[step].active = true;
           }
           else if (step == 10) {
               eggs[step - 1].active = false;
               clearTimeout(that.timer);
               that = null;
           }
           else {
               eggs[step - 1].active = false;
               eggs[step].active = true;
           }

           if (step == 5 && eggs[step].spawn == wolfPos) {
               eggs[step].active = false;
               clearTimeout(that.timer);
               count++;
               that = null;
           }
           else if (step == 5) {
               losecount++;
           }

           step++;
       }

           this.timer = setTimeout(function () {  //Рекурсивный вызов
               if (that) {
                   that.setStep();
                   //console.log(step);
               }
           }, 1000);
       }


       this.setStep();

}




Сам объект рождается в другом месте кода. Тоже через таймер. Каждую секунду новый объект. Моя программа работает, но я волнуюсь насчет утечек.

Это сообщение отредактировал(а) PsiMagistr - 26.3.2019, 17:23


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ksnk
Дата 26.3.2019, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Утечки памяти, обычно. ловятся не просмотром кода, а профайлером. https://developer.chrome.com/devtools/docs/heap-profiling - вот так, например


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PsiMagistr
Дата 27.3.2019, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Цитата(ksnk @ 26.3.2019,  17:42)
Утечки памяти, обычно. ловятся не просмотром кода, а профайлером. https://developer.chrome.com/devtools/docs/heap-profiling - вот так, например

Спасибо большое. Если б я еще в этом понимал. (


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ksnk
Дата 27.3.2019, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



https://habr.com/ru/post/309318/
Вот - то же, но расшифровано и по русски. В гуглопоиске тоже нужно разбираться ;)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PsiMagistr
Дата 27.3.2019, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Это я читал. Спасибо большое. У меня в хроме даже профилировщик совсем по др. выглядит. 
Кстати никому код "Ну погоди" не нужен? Чистый джс, только что сделал.

https://nupogodi.000webhostapp.com/

Это сообщение отредактировал(а) PsiMagistr - 27.3.2019, 15:39


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
_zorn_
Дата 28.3.2019, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



Цитата(PsiMagistr @  27.3.2019,  19:33 Найти цитируемый пост)
Кстати никому код "Ну погоди" не нужен? Чистый джс, только что сделал.

Можно было и оригинальную в качестве бекраунда )
Вернее даже нужно было.

Это сообщение отредактировал(а) _zorn_ - 28.3.2019, 17:36
PM MAIL   Вверх
ksnk
Дата 28.3.2019, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Кнопку Старт и Пауза нужно визуально отделить от игровых кнопок. Так они путаются с игровыми кнопками - если играть мышкой - мешает smile Нипример сверху-снизу или как в оригинальной версии.
Ну и в оригинальной игре ускорялись яйца со временем, или их гуще становилось -  а тут, вроде нет такого.
А так, конечно забавно
https://www.youtube.com/watch?v=vGfAsXQ3FuI - вот примерно так выглядел оригинал если скопировать именно такое расположение кнопок и добавить звук - будет больше ностальгирующих ;) 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 28.3.2019, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 1
Всего: 12



И иголкой "время настраивать" ))
PM MAIL   Вверх
PsiMagistr
Дата 29.3.2019, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Цитата(ksnk @ 28.3.2019,  18:04)
Кнопку Старт и Пауза нужно визуально отделить от игровых кнопок. Так они путаются с игровыми кнопками - если играть мышкой - мешает smile Нипример сверху-снизу или как в оригинальной версии.
Ну и в оригинальной игре ускорялись яйца со временем, или их гуще становилось -  а тут, вроде нет такого.
А так, конечно забавно
https://www.youtube.com/watch?v=vGfAsXQ3FuI - вот примерно так выглядел оригинал если скопировать именно такое расположение кнопок и добавить звук - будет больше ностальгирующих ;)

Спасибо, друзья.

Да я ускорение не делал... Яйца с интервалом в 2 сек спавнятся.
Ребят, а если одну большую спрайт карту сделать это побыстрее будет, чем загруз 25 отдельных изображений?


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ksnk
Дата 29.3.2019, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Обычно делают одну картинку со всеми спрайтами и показывают их бякграундом со смещением. Получается стартовая загрузка страницы чуть быстрее. Хотя на быстродействии игры не скажется.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PsiMagistr
Дата 29.3.2019, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Цитата(ksnk @ 29.3.2019,  15:17)
Обычно делают одну картинку со всеми спрайтами и показывают их бякграундом со смещением. Получается стартовая загрузка страницы чуть быстрее. Хотя на быстродействии игры не скажется.

Спасибо большое... А то я эти спрайты три дня резал... ).
Звуки добавил. Но, блин, хостинг не грузит - 404 и все по барабану ему. Видать ограничение какое-то. 
Дома звук идет нормально.

Это сообщение отредактировал(а) PsiMagistr - 29.3.2019, 15:43


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 29.3.2019, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Цитата(ksnk @ 29.3.2019,  15:17)
Обычно делают одну картинку со всеми спрайтами и показывают их бякграундом со смещением. Получается стартовая загрузка страницы чуть быстрее. Хотя на быстродействии игры не скажется.

Я хотел бы уяснить одну тонкость, если можно:

Код

window.onload = function(){

var count = 0;
setTimeout(function(){

   count = 5;

), 1000);


setTimeout(function(){

   count = 7;

}, 1000);




Какой из двух таймеров сработает раньше, если они оба настроены на одинаковый отрезок времени? Или сработает по ходу кода - сначала первый (4 строка), потом второй (11 строка)? Как JS разруливает подобное?

Спасибо большое.

Это сообщение отредактировал(а) PsiMagistr - 29.3.2019, 16:48


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ksnk
Дата 29.3.2019, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



PsiMagistr, Звук нужно вставлять тегом audio. Вероятнее всего их потребуется несколько, клик времени и разбитые-пойманные яйца. У тега на JS есть возможность порулить проигрыванием. Сами теги можно и скрыть, но общая кнопка отключения-включения музыки должна быть. 
Таймеры - вещь непредсказуемая, зависящая от реализации и броузера. Скорее всего, они сработают первый раз в том же порядке как написано, а вот последующие разы уже как получится поставить. Лучше не увлекаться слишком большим количеством таймеров на странице


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PsiMagistr
Дата 29.3.2019, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Цитата(ksnk @ 29.3.2019,  16:53)
PsiMagistr, Звук нужно вставлять тегом audio. Вероятнее всего их потребуется несколько, клик времени и разбитые-пойманные яйца. У тега на JS есть возможность порулить проигрыванием. Сами теги можно и скрыть, но общая кнопка отключения-включения музыки должна быть. 
Таймеры - вещь непредсказуемая, зависящая от реализации и броузера. Скорее всего, они сработают первый раз в том же порядке как написано, а вот последующие разы уже как получится поставить. Лучше не увлекаться слишком большим количеством таймеров на странице

Я попробовал без тега через прямое создание объекта.

Код


var resursesCount = 0;

var zvuk = new Audio();
zvuk.src = "путь";
zvuk.addEventListener("loadeddata" function(){
 resursesCount++;
});


// =============================


   if(resursesCount == 1){ // где то в циклах кода. Как только загрузились - проигрываем
  zvuk.play();

   }
}




Дома такое работает, хост отвечает при загрузке аудио 404й ошибкой. Пути верные.

Насчет таймеров расстроился. У меня игра на таймерах. Внутри каждого яйца вшит таймер + таймер который порождает сами яйца.

Я думал они всегда по ходу кода срабатывают..


Но вроде пока работает. setInterval не использую. Использую рекурсивно вызываемый setTimeout.


Это сообщение отредактировал(а) PsiMagistr - 29.3.2019, 17:10


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 10.4.2019, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Изменен алгоритм игры "Ну погоди". Добавлено автоматическое изменение скорости падения яиц.

https://nupogodi.000webhostapp.com/



--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 10.4.2019, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Была глубокая переработка. Игра стала однотаймерной. Дорогостоящая функция splice в алгоритме удаления элемента из массива заменена. Исправлена критическая ошибка из-за которой ресурсы игры могли не загружаться.

Это сообщение отредактировал(а) PsiMagistr - 10.4.2019, 16:28


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 12.4.2019, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Зацените!

https://nupogodi.000webhostapp.com/

Управление - A - влево вверх. Z - влево вниз, H - вправо вверх, B - вправо вниз, Esc - пауза. Пробел - старт новой игры. Соберите 500 золотых яиц и останьтесь в живых. Не берите коричневые. Красные яйца позволяют немного подлечиться. Каждое упущенное золотое яйцо и взятое коричневое ведет к потере жизней.


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 16.4.2019, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Решена проблема со звуковоспроизведленитем.

Звук воспроизводится в браузерах последних версий, имеющих поддержку формата mp3


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 16.4.2019, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: нет
Всего: 1



Решена проблема со звуковоспроизведленитем.

Звук воспроизводится в браузерах последних версий, имеющих поддержку формата mp3


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
ОльгаБетецкая
Дата 2.5.2019, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.5.2019

Репутация: нет
Всего: нет



Обратитесь к профессионалу, у меня были аналогичные проблемы. Я обратилась к мастеру по созданию и продвижению сайтов Сергею Малахову.
Он создал:
- Уникальный дизайн
- Систему управления СМС
- Наполнение контентом
- Адаптивную верстку
- И сделал мне подарок — 1 год хостинга и домен в подарок.
Подробнее о его услугах Вы можете посмотреть на сайте https://malakhov.site/


Это сообщение отредактировал(а) ОльгаБетецкая - 2.5.2019, 10:03
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2222 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.