MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Периодическое движение
Как организовать) Предположим, что данные по X и Y скорости у меня есть в хэше. Была идея сделать рекурсивную функцию, которая двигает передаваемого ей юнита на прочитанные из хэша X и Y и через 0.04 снова вызывает себя пока юнит не умер. Однако такая функция требует передачи ей параметра (самого юнита-снаряд). А таймеры не позволяют передавать функции параметры. Так как это практично реализовать?
|
06.01.2012, 17:25 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Но ведь на таймер что хочешь можно через тот же хэш повесить.
Или я не так понял задачу? Нужна общая функция для всех двигаемых дами на карте? |
06.01.2012, 18:03 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт:
8,237Активность: |
MrSigma:
почему не позволяют? сохраняем в ячейке таймера real X и real Y и потом загружаем. |
06.01.2012, 18:26 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Пишу в темноте, могут быть ошибки. Отредактировано Doc, 08.01.2012 в 22:48. |
06.01.2012, 18:33 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Doc, если честно, я не совсем еще разобрался со структурами на жассе... Насколько я понимаю, в отличии от Сишных структур, в них можно записывать еще и функции?
MrSigma добавил: И как остановить такое движение? После вызова launch таймер будет каждые 0.025 секунд вызывать апдейт координат моего партикл юнита... Предположим я в update() запишу условия, при которых мое движение остановится. Как мне уничтожить этот таймер из функции update? |
08.01.2012, 00:27 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
MrSigma, да. Это скорее классы, чем структуры, см C++ и вообще большинство ООП языков. |
08.01.2012, 00:27 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Точно! Вот же он! getExpiredTimer...
MrSigma добавил: до чего дошел прогресс... я уж было начал негодовать из-за отсутствия объектной ооринтации jass'а)) Видимо я многое упустил) MrSigma добавил: есть какой нибудь гайд по синтаксису этого... объектно ориентированного элемента жасса?) Из всего прочитанного, я понял лишь, что новый объект структуры объявляется посредством метода .allocate) |
08.01.2012, 00:33 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
vjass manual в папке JNGP\jasshelper |
08.01.2012, 01:23 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
там, где ты указал, я ничего не нашел.
Попытался разобраться сам, но джассхелпер ругается на строчку projectile p = projectile.allocate(); говорит, что метод allocate - приватный. |
08.01.2012, 15:59 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
MrSigma, потому что надо юзать .create() для создания нового экземпляра. allocate можно только внутри структуры использовать |
08.01.2012, 16:33 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Док, ты лжец... T_T
|
08.01.2012, 16:34 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
MrSigma, xgm.ru/forum/showthread.php?t=13118 смотри аттач в первом посту |
08.01.2012, 16:35 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Код:
Написано pr is not a struct name. |
08.01.2012, 17:44 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
к методам можно обращаться только через имя структуры |
08.01.2012, 20:08 | #14
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Аааааа, .allocate можно использовать только когда .create занят да.
Doc добавил:
и да, пост 14 вообще лол, т.к.
Почему не
Doc добавил: Читай основные принципы ООП, про статик методы. |
08.01.2012, 20:21 | #15
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
потому как писал этот стракт до того как ознакомился с синтаксисом и не знал как объявить нестандартый конструктор или деструктор)
MrSigma добавил: Judycaster64, и как же тогда этот код выберет нужную структуру? Положим у меня есть с десяток разных projectile'ов. Если я буду использовать статичный метод, это ведь повлияет на все стракты типа projectile =\ Мне нужно изменять координаты только для одного объекта этого стракта. MrSigma добавил: Doc, я имею некоторые знания в области ООП. На том же си шарпе я использовал нестатичные методы и обращался к ним через конкретный экземпляр, а не через весь класс целиком. Почему я не могу здесь обратиться к нему таким же образом? MrSigma добавил: В предыдущей строчке этого кода, кстати, я именно так и сделал. Там я воспользовался методом initialize для одно лишь объекта: pr. Ну и кто мне теперь скажет, что к методам можно обратиться только через имя стракта? MrSigma добавил: Я понял почему я не могу использовать методы с таймерами таким образом... Все таки jass - не объектно ориентированный язык. И запись pr.move() в данном случае примерно равна projectile.move(pr). У меня появилась идея. Несколько тормозная по сравнению со страктами, однако должна работать. Сейчас попробую. |
08.01.2012, 22:07 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
MrSigma, ну так лол вот затем и надо сохранять структуру. смотри мой код еще раз. из таймера можно обратиться только к статичным функциям. Да, последний абзац твой все объясняет. |
08.01.2012, 22:48 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
Я придумал (то есть не придумал, а переперепридумал) метод без использования страктов, а с помощью хэша (потому более тормозной) и одного таймера.
В общем вот код: Код:
MrSigma добавил: Nerevar, это ваш метод, если не ошибаюсь. Я просто совсем забыл про GetExpiredTimer, и не принял во внимание, что можно навешать по его Id чего угодно...) |
08.01.2012, 23:05 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
|
08.01.2012, 23:08 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MrSigma
愛 - XGM
offline
Опыт:
2,429Активность: |
безусловно. Потому я и пояснил, что пере-пере-пере придумал) Словом, простота этого метода радует) Однако более подробным изучением страктов все же заняться стоит...
|
08.01.2012, 23:10 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|