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