@kserg903

Как останавливать поток события?

Есть небольшое приложение, в котором по экрану движется объект1. Направление движение определяет нажатая клавиша. При этом по экрану движется ещё один объект (объект2), направление которого каждую секунду определяет генератор случайных чисел.

DEMO

Проблема в том, что после того как пользователь нажимает на клавишу, объект1 смещается в пространстве(как задумано), но в следующие моменты он продолжает смещаться в пространстве(как не задумано), хотя пользователь уже не нажимает клавишу.

Помогите пожалуйста это исправить. То есть другими словами мне нужно чтобы объект1 двигался только в момент нажатия пользователем клавиши.
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
@Mikola-BLR
https://angular-rxjs6-3ge5rx.stackblitz.io

combineLatest для вашего случая не подходит. Уже в названии можно понять весь подвох ситуации. Он комбинирует последние значения для обоих Observable. Изменение enemyMove$ каждые 200мс приводит к тому, что ваша подписка (subscribe) срабатывает каждые 200мс и получает оба значения: рандомное для enemyMove$ и последнюю нажатую клавишу для playerMove$. Даже если мы клавишу больше не жмём, её последнее значение попадает в next.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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