|
Проблема в жизненном цикле при организации пошаговой отрисовки / React-Hooks
|
|||
---|---|---|---|
#18+
Задача: Есть поле (грид) по которому двигается голова змейки, при нажатии на стрелки голова меняет направление. Рендер должен происходить согласно начальной скорости (а так же может меняться в зависимости от условий, не входит в контекст этого запроса), скорость исчисляется в секундах/миллисекундах. Весь код работает отлично за исключением проблемы (метод GameSleep) с управлением этой самой задержки рендера до следующего шага (рендера). Кто может помочь с настройкой жизненного цикла удовлетворяющего исходной задаче? p.s. решение с циклами while, setInterval/setTimeout в основном lifecycle компонента результата не дадут - т.к. из-за замыкания новое значение direction (направление для змейки), полученное в SnakeEventListener, не попадет в этот самые циклы. Вся сложность создать управляемый цикл (периодичность управляемая значением speed). p.s.s. код естественно сократил до минимума, чтобы не потерялась нить бизнес-логики КОД Точка входа: Index.js: Код: javascript 1.
Snake.js: Код: 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.
Grid.js: Код: 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.
Building.js: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 09:23 |
|
Проблема в жизненном цикле при организации пошаговой отрисовки / React-Hooks
|
|||
---|---|---|---|
#18+
Ну так запихай свой mainloop в setInterval, который его будет дёргать каждые n ms. Какие проблемы? Когда поменяется скорость выкинь старый интервал, сделай новый. Или сделай интервал 10ms и пропускай сколько надо до следующего "хода". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 10:22 |
|
|
start [/forum/topic.php?fid=22&fpage=8&tid=1443401]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 137ms |
0 / 0 |