11 Ноября 2024, 14:43:54
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > OO?!
OO?!
(Прочитано 39749 раз)
  1 [2] 3 4
Печать
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #15 04 Июля 2009, 17:24:01 »
Re: OO?! |
15
Пасиба, anval! Все работает вроде бы! В любом случае совет ценный, пригодиться! Улыбающийся

ой помогите еще, люди добрые! В общем есть большое количество шаров с физикой, которые катаются по полю. Сделаны они с использованием ОО. И вот надо мне вычислить дистанцию каждого из них до определенного объекта. Их положение определяется ODE Body. Я пробовал просто вытащить положение из матрицы ODE и соответственно получить дистанцию до друго вектора, но так у меня производятся вычисления лишь для последнего шара, а не для всего набора, хотя все это делаю внутри функции, которая итериться n раз. Как быть?
« Последнее редактирование: 05 Июля 2009, 20:32:29 от mixey »
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #16 08 Июля 2009, 19:28:03 »
Re: OO?! |
16
Помогите кто чем может! У меня еще проблема с ОО. К предыдущей добавилась еще одна. Но обе из одного раздела фактически. Объясните, чем отличается цикл FoorLoop у Array и For each class instance list у ОО?

Мне нужно внутри цикла создать n-штук EditBox и заносить в массив их содержимое после каждого изменения этого самого содержимого. То есть при срабатывании OnChangeEvent. Но у меня все происходит со сдвигом на один шаг. То есть я ввожу последовательно числа [1,2,3] а в массив заносятся [ничего,1,2]
С чем это может быть звязано? Я думаю, что неверную структуру сделал, но какая верная понятия не имею...
Viik | **** | Старожил | Сообщений: 302 | «Ответ #17 08 Июля 2009, 20:17:16 »
Re: OO?! |
17
Видимо с тем что индексы используеш 1,2,3 а не 0,1,2
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #18 08 Июля 2009, 21:01:39 »
Re: OO?! |
18
Эти числа я ввожу в EditBox, так что сомневаюсь, что это как-то влияет. А массив считаю с [0..n]
Denil-Tornado | **** | Старожил | Сообщений: 313 | «Ответ #19 08 Июля 2009, 21:22:53 »
Re: OO?! |
19
На мой взгляд это безполезная вещь, хотя она удобна тем что раз зделал а потом по бырому всё собрать. Если нужно могу состряпать урок с простой сценой.
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #20 08 Июля 2009, 21:42:13 »
Re: OO?! |
20
Denil-Tornado, буду весьма благодарен! Веселый
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #21 08 Июля 2009, 23:25:03 »
Re: OO?! |
21
Цитировать
Помогите кто чем может! У меня еще проблема с ОО. К предыдущей добавилась еще одна. Но обе из одного раздела фактически. Объясните, чем отличается цикл FoorLoop у Array и For each class instance list у ОО?

For Loop он не у Array, он сам по себе Улыбающийся просто позволяет сделать вызов опрделённого участка кода N раз, и обеспечивает тебя информацией о том которая итерация цикла щяс происходит. For each же позволяет тебе достаточно легко и просто перебрать все элементы массива, предоставляет тебе сразу ссылку на очередной перебираемый элемент массива. С помощью первоог можно всегда сделать второе, но наоборот уже не всегда. Вот премер кода который делает одно и то же

* for_loop&for_each.bmp (342.39 Кб, 524x223 - просмотрено 2573 раз.)
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #22 08 Июля 2009, 23:31:14 »
Re: OO?! |
22
Пасиба, anval! Все работает вроде бы! В любом случае совет ценный, пригодиться! Улыбающийся

ой помогите еще, люди добрые! В общем есть большое количество шаров с физикой, которые катаются по полю. Сделаны они с использованием ОО. И вот надо мне вычислить дистанцию каждого из них до определенного объекта. Их положение определяется ODE Body. Я пробовал просто вытащить положение из матрицы ODE и соответственно получить дистанцию до друго вектора, но так у меня производятся вычисления лишь для последнего шара, а не для всего набора, хотя все это делаю внутри функции, которая итериться n раз. Как быть?

в целом сложно сказать что именно не так, было бы проще если бы ты выслал свои исходники или хотя бы скрин своей функции которая у тебя это делает. Ну хотя у меня есть  некоторые предположение, наводящий вопрос -- что ты делаеш с каждым очередным полученным расстоянием до шара, сохраняеш его какнить? не затираеш ли ты его потом следующим полученным расстоянием?
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #23 09 Июля 2009, 18:36:47 »
Re: OO?! |
23
DimiS, пасиба за совет... кажется я кое-что понял!  Веселый

в целом сложно сказать что именно не так, было бы проще если бы ты выслал свои исходники или хотя бы скрин своей функции которая у тебя это делает. Ну хотя у меня есть  некоторые предположение, наводящий вопрос -- что ты делаеш с каждым очередным полученным расстоянием до шара, сохраняеш его какнить? не затираеш ли ты его потом следующим полученным расстоянием?
Неа... Не сохраняю... Можно поподробнее в этом направлении?  Улыбающийся  (Блин... тока исходник мега замусоренный моими экспериментами - там ничего не понятно, сделаю заново) Злой

------------------------------------
В общем, я сделал что мне надо, но вопрос такой - верным ли путем я пошел. То есть вопрос об эффективности того, что я натворил.

Целью моей было сделать меню с приминением ОО на случай сложной структуры этого самого меню, чтобы не делать кучу GUI элементов. Вопросы такие:
1) Правильно ли я понял суть Interface, Class?
2) Есть ли вообще смысл так делать?
3) Как можно сделать то же самое, но эффективнее и проще?

Исходник прилагается
* OO GUI.cgr (32.58 Кб - загружено 1360 раз.)
« Последнее редактирование: 09 Июля 2009, 18:42:05 от mixey »
Denil-Tornado | **** | Старожил | Сообщений: 313 | «Ответ #24 09 Июля 2009, 23:06:45 »
Re: OO?! |
24
Вот долгожданная ссылка. Думаю чем нибудь да поможет.

Скачать с Letitbit 50 Mb
« Последнее редактирование: 09 Июля 2009, 23:09:53 от Denil-Tornado »
anval | *** | Постоялец | Сообщений: 148 | «Ответ #25 10 Июля 2009, 08:35:20 »
Re: OO?! |
25
Честно говоря не посмотрел твой пример с gui,но на оффоруме есть отличный примерчик,в ветке по конференции.Правда сначала надо разобраться с Examples-OO-Observer.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #26 10 Июля 2009, 09:19:10 »
Re: OO?! |
26
Denil-Tornado

Спасибо за урок! Смеющийся
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #27 10 Июля 2009, 13:18:11 »
Re: OO?! |
27

Неа... Не сохраняю... Можно поподробнее в этом направлении?  Улыбающийся  (Блин... тока исходник мега замусоренный моими экспериментами - там ничего не понятно, сделаю заново) Злой

Ну вот ты вычисляеш несколько разных расстояний, значит они у тебя должны хранится в разных переменных, ну я это имел ввиду.


В общем, я сделал что мне надо, но вопрос такой - верным ли путем я пошел. То есть вопрос об эффективности того, что я натворил.

Целью моей было сделать меню с приминением ОО на случай сложной структуры этого самого меню, чтобы не делать кучу GUI элементов. Вопросы такие:
1) Правильно ли я понял суть Interface, Class?
2) Есть ли вообще смысл так делать?
3) Как можно сделать то же самое, но эффективнее и проще?

Исходник прилагается

1) Пока сложно сказать, но мыслиш ты в правильном направлении Подмигивающий
2) Конечно есть, я и сам делал подобные вещи в коммерческих проектах
3)Я переделал слегка твой исходник -- ОО структуру + сделал пример использования такого подхода.
Всё это касается в основном того как следует воспринимать Объектно Ориентированое програмирование в целом, не только в квесте. Во первых я разделил понятие GUI элемента и компонента который может содержать в себе какое то сочетание из этих GUI элементов. Я назвал такой компонент MenuItem, для наглядности я добавил в него два слайдера. То, как было сделано у тебя, не позволяло этого сделать, нельзя два раза включить один и тот же интерфейс.
Также я создал интерфейс общий для всех GUI элементов который содержит свойства которые есть у каждого из них -- позиция и размеры(можно там добавить ещё Enabled, Skin). И сделал отдельные интерфейсы для тех свойств которые уже могут различатся, отдельно для EditBox и для Slider. А потом создал классы которые совмещяют необходимые интерфейсы.
Ещё совет, если у тебя есть функция с названием Draw, то пусть она только рисует, не надо там делать какие то ещё посторонние телодвижения. Постарайся так же избегать в функциях какого то локального класса использовать какие то внешние переменные.

Всё что я те тут насоветовал это не аксиома, но жизнь становится проще Улыбающийся

ПыСы: использование ОО позволяет полностью отказаться от исползования квестовых массивов, и в этом есть куча преимуществ
* OO GUI.cgr (139.28 Кб - загружено 1350 раз.)
mixey | ** | Пользователь | Сообщений: 74 | «Ответ #28 11 Июля 2009, 02:30:05 »
Re: OO?! |
28
Ой блин! Спасибо вам ОГРОМНОЕ DimiS (за объяснения, которые убрали мешанину у меня в голове и за переделывание исходника) и Denil-Tornado (за видео урок)!!!
Прям Очень помогли! Мне как раз это надо было! Теперь многое стало ясно!
Denil-Tornado | **** | Старожил | Сообщений: 313 | «Ответ #29 15 Июля 2009, 12:45:25 »
Re: OO?! |
29
Всегда пожалуйста, обращайтесь ещё. Веселый
 
  1 [2] 3 4
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > OO?!
Перейти в: