Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 02.07.2007, 23:24   #1
LepihinMS
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 45
По умолчанию Динамическое создание объектов

Скажите мне для начала как в процессе выполнения программы создать на форме кнопку на пример.
LepihinMS вне форума Ответить с цитированием
Старый 03.07.2007, 00:03   #2
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Хорошо

Код:
type
  TForm1 = class(TForm)
   .......................................... 
 
   procedure MyButtonClick(Sender: TObject);
  private...................
..................................
 
var MyButton:TButton;
 
 
procedure TForm1.MyButtonClick(Sender: TObject);
begin
{твой код}
end;
 
....................
 
MyButton:=Tbutton.Create(Owner);
MyButton.Parent:=self;
MyButton.Height:=20;
MyButton.Width:=80;
MyButton.Left:=100;
MyButton.Top:=100;
MyButton.Visible:=true;
MyButton.Caption:='MyCaption';
MyButton.OnClick:=Form1.MyButtonClick;
Разберемся.......

Последний раз редактировалось ЧИЖ; 03.07.2007 в 00:53.
ЧИЖ вне форума Ответить с цитированием
Старый 03.07.2007, 00:47   #3
LepihinMS
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 45
По умолчанию

Создаю тремя нажатиями на Button1 три кубика.
Цитата:
var
Form1: TForm1;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Sfera1: TGLCube;
begin
inc(i);
Sfera1:=TGLCube.Create(GLScene1);
Sfera1.Position.X:=0;
Sfera1.Position.Y:=0;
Sfera1.Position.Z:=1;
Sfera1.Name:='S'+IntToStr(i);
Sfera1.Parent:=GLCube1;
end;
end.
А как мне теперь переместись/покрутить/перекрасить их уже созданных?
LepihinMS вне форума Ответить с цитированием
Старый 03.07.2007, 00:57   #4
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
По умолчанию

а где ты их 3 создаешь помоему одну но 3 раза

чтоб создать 3 надо чтоб их и было 3 например массив

Sfera:array[1..3] TGLCube;

создаешь естественно по элементно

и к стати почитай предыдущий пост я там дописал то что сразу забыл написать
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 03.07.2007, 01:10   #5
LepihinMS
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 45
По умолчанию

Спасибо, с массивом получается почти то что мне надо. Сейчас перелопачу свою игру под этот метод. А дальше видно будет.

Все равно ерунда какая то! Как тогда создают почти безграничное количество объектов? Я видел где-то пример где из трубы сыплются сотни шариков. На "Sfera:array[1..1000] TGLCube;" - никакой оперативы не хватит. Что-то ты, товарищ, напутал.

Последний раз редактировалось mihali4; 24.01.2010 в 13:39.
LepihinMS вне форума Ответить с цитированием
Старый 03.07.2007, 09:16   #6
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Лампочка

а ты о динамических массивах слыхал

Код:
var arr:array of MyType;
MyLength:word;
 
SetLength(arr,MyLength);
 
MyLength:=length(arr);
увеличить длинну массива на 1 можно например так

SetLength(arr,length(arr)+1);

индексация естественно начинается с 0

а тысячи шариков можно сделать например так

когда одни шарики уже долетают до места где их не видно их координаты цвет и т д задаются так что они опять на верху и вроде как другие
так тебе не надо будет их сильно много и оперативы хватит

и к стати если я не ошибаюсь у тебя 3D игра?
попробуй использовать Vertex Shaider он ведь умеет множить объекты
(много одинаковых объектов по разному себя ведут и весит это далеко не столько сколько такое же количество независимых объектов)

и вообще как насчет того чтобы написать не очень силиный для начала физ двиг и рендерер к нему
Разберемся.......

Последний раз редактировалось ЧИЖ; 03.07.2007 в 10:04.
ЧИЖ вне форума Ответить с цитированием
Старый 03.07.2007, 21:55   #7
LepihinMS
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 45
По умолчанию

Ясно что ничего не ясно.
LepihinMS вне форума Ответить с цитированием
Старый 03.07.2007, 23:28   #8
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Стрелка

а что не ясного динамические массивы или Vertex Shaider

если последнее то тут я тебе не помогу но игра написанная с их использованием была бы достаточно профессионольо сделана

а с динамическими массивами все просто

задаешь массив без указания его размера

arr:array of TGLCube;
i:word;


допустим что тебе надо сделать 10 кубов

i:=10;
setlength(arr,i);
for i:=0 to 9 do begin
arr[i]:=TGLCube.create.........
................................... ....
end;

а потом их должно стать на 5 больше

setlength(arr,length(arr)+5);

for...................

апотом на 10 меньше

setlength(arr,length(arr)-10);
................................... .....

а потом вообще нестать

setlength(arr,0);

в чем проблема то

ну а как перезадавать координаты и т д объектам ушедшим из поля зрения уж сам сообрази
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 03.07.2007, 23:50   #9
LepihinMS
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 45
По умолчанию

Помню пример видел. Жмешь на кнопку и из трубы сыплются сотни сфер. Как автор примера добился этого?

http://www.server-c.pochta.ru/TANK.rar - используется массив из 20 TGLActor. Кушает 40Мб оперативы! Гадость какая-то.

Последний раз редактировалось mihali4; 24.01.2010 в 13:39.
LepihinMS вне форума Ответить с цитированием
Старый 04.07.2007, 00:21   #10
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Подмигивание

а можт исходник а не прогу так искать пути решения проблемы было бы проще

и еще для более быстрой связи есть ICQ
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 13:03
Динамическое создание объекта ANGa Помощь студентам 3 10.04.2008 17:14
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 11:00
Динамическое создание фрейма s-force Общие вопросы Delphi 9 05.09.2007 15:56
Динамическое создание WebBrowser DragonLand Работа с сетью в Delphi 2 20.08.2007 20:47


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS