TGViewer
Moth Moth @namlessmoth · 44 subscribers
Post #123 59
Это важный пост на интересную тему который я хотел написать уже несколько дней, но т.к. тема абстрактная, то решил немного подготовится и нарисовать вам две простые схемки
Как выстраивать связи между объектами в компонентной системе?
В 27 посте "Как передавать данные между объектами" мне нужно было передать направление из объекта "джойстик" в объект "игрок", чтобы он потом двигать игрока по этому направлению.
Чтобы передать данные я просто вставил ссылку на джойстик внутрь игрока. Конечно код был рабочий, но... Представьте радиоуправляемую машинку. Есть отдельно пульт управления отдельно катается машинка и мы не кладём пульт на машинку чтобы ей управлять верно? Чтобы управлять машинкой, мы с помощью пульта посылаем сигналы "по воздуху" машинке и она едет. Вот именно так с помощью сигналов нужно связывать объекты в программировании. Вообще я знал об этом, потому что написал про систему сигналов в годо и сообщений в дефолде, которые работаю примерно по такому принципу и... я даже не знаю почему решил сделать по другому.
Вот как я реализовал передачу сообщений от джойстика к игроку:
...
onMousePress(() => {
...
this.parent.trigger("startMove")
...
})

onMouseDown(() => {
...
this.parent.trigger("input", this.direction)
...
})

onMouseRelease(() => {
...
this.parent.trigger("endMove")
...
})
...

Суть в том что и игрок и джойстик "наследуются" от объекта game (на самом деле это не наследование, а связь parent - child о которой я писал в 21 посте). И вот этот объект game выступает в качестве "воздуха" по которому передаются сигналы. В коде изменилось только то, что мы триггерим события не у самого джойстика "this.trigger()", а у его родителя - game "this.parent.trigger()".
Закончились символы ->
  • ❤ 2
  • 👏 1
More from @namlessmoth
  1. Mar 7, 2026Как сломать босса одним прокачанным навыком Причём первую заратану я победил точно так же,…
  2. Mar 3, 2026Наиграл уже 150+ часов и даже не прошел половину игры Мне капец как не везёт почти в каждо…
  3. Feb 17, 2026Один месяц подписки на впн Вдруг кому надо https://t.me/gruVPNbot?start=g_UZhunlWNfFC_2127…
  4. Feb 16, 2026оставлю тут, чтобы не потерять вам смотреть нельзя, это только для меня
  5. Feb 13, 2026Вчера сделал всего три задания и все три оказались не правильными 1) Задание: Проведите ре…
  6. Feb 12, 2026Оказалось что всё-таки можно сдавать несколько заданий за один раз. Я вчера сдал 7 заданий…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →