• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

Новости:

Форум Quest3D восстановлен!

Главное меню

OO?!

Автор anval, 22 мая 2008, 20:00:58

« назад - далее »

mixey

#15
Пасиба, anval! Все работает вроде бы! В любом случае совет ценный, пригодиться! :)

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

mixey

Помогите кто чем может! У меня еще проблема с ОО. К предыдущей добавилась еще одна. Но обе из одного раздела фактически. Объясните, чем отличается цикл FoorLoop у Array и For each class instance list у ОО?

Мне нужно внутри цикла создать n-штук EditBox и заносить в массив их содержимое после каждого изменения этого самого содержимого. То есть при срабатывании OnChangeEvent. Но у меня все происходит со сдвигом на один шаг. То есть я ввожу последовательно числа [1,2,3] а в массив заносятся [ничего,1,2]
С чем это может быть звязано? Я думаю, что неверную структуру сделал, но какая верная понятия не имею...

Viik

Видимо с тем что индексы используеш 1,2,3 а не 0,1,2

mixey

Эти числа я ввожу в EditBox, так что сомневаюсь, что это как-то влияет. А массив считаю с [0..n]

Denil-Tornado

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

mixey

Denil-Tornado, буду весьма благодарен! :D

DimiS

ЦитироватьПомогите кто чем может! У меня еще проблема с ОО. К предыдущей добавилась еще одна. Но обе из одного раздела фактически. Объясните, чем отличается цикл FoorLoop у Array и For each class instance list у ОО?

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

DimiS

Цитата: mixey от 04 июля 2009, 18:24:01
Пасиба, anval! Все работает вроде бы! В любом случае совет ценный, пригодиться! :)

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

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

mixey

#23
DimiS, пасиба за совет... кажется я кое-что понял!  :D

Цитата: DimiS от 09 июля 2009, 00:31:14
в целом сложно сказать что именно не так, было бы проще если бы ты выслал свои исходники или хотя бы скрин своей функции которая у тебя это делает. Ну хотя у меня есть  некоторые предположение, наводящий вопрос -- что ты делаеш с каждым очередным полученным расстоянием до шара, сохраняеш его какнить? не затираеш ли ты его потом следующим полученным расстоянием?
Неа... Не сохраняю... Можно поподробнее в этом направлении?  :)  (Блин... тока исходник мега замусоренный моими экспериментами - там ничего не понятно, сделаю заново) >:(

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

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

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

Denil-Tornado

#24
Вот долгожданная ссылка. Думаю чем нибудь да поможет.

Скачать с Letitbit 50 Mb

anval

Честно говоря не посмотрел твой пример с gui,но на оффоруме есть отличный примерчик,в ветке по конференции.Правда сначала надо разобраться с Examples-OO-Observer.

Ruslan

Denil-Tornado

Спасибо за урок! ;D

DimiS

Цитата: mixey от 09 июля 2009, 19:36:47

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

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

Цитата: mixey от 09 июля 2009, 19:36:47

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

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

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

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

Всё что я те тут насоветовал это не аксиома, но жизнь становится проще :)

ПыСы: использование ОО позволяет полностью отказаться от исползования квестовых массивов, и в этом есть куча преимуществ

mixey

Ой блин! Спасибо вам ОГРОМНОЕ DimiS (за объяснения, которые убрали мешанину у меня в голове и за переделывание исходника) и Denil-Tornado (за видео урок)!!!
Прям Очень помогли! Мне как раз это надо было! Теперь многое стало ясно!

Denil-Tornado

Всегда пожалуйста, обращайтесь ещё. :D