Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как создавать примитивные 3D фигуры в runtime


FreeOS

Вопрос

Как создавать(ну и удалять,изменять) примитивные 3D фигуры (например Rectangle3D, Cube, Sphere ...) в runtime-ме в большом количестве.

То есть я не знаю сколько мне надо фигур заранее.

 

За ранее СПАСИБО

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Как вариант:

 

Procedure DrawYou3d(Const Count:Integer);

var

     You3d:Array of TYou3d;

     i:integer;

Begin

    SetLength(You3d, Count);

    for i:=Low(You3d) to High(You3d) do 

    BEGIN

        You3d:=TYou3d.Create(Self);

        You3d.Parent:=YouForm;

    END

End;

 

TYou3d - класс ваших 3д фигур 

YouForm - родитель("на ком" будут лежать они)

(код писал без реальной проверки в студии - если не работает - скажите)

Изменено пользователем Сысоев Максим
Ссылка на комментарий
  • 0

Как вариант:

 

Procedure DrawYou3d(Const Count:Integer);

var

     You3d:Array of TYou3d;

     i:integer;

Begin

    SetLength(You3d, Count);

    for i:=Low(You3d) to High(You3d) do 

    BEGIN

        You3d:=TYou3d.Create(Self);

        You3d.Parent:=YouForm;

    END

End;

 

TYou3d - класс ваших 3д фигур 

YouForm - родитель("на ком" будут лежать они)

(код писал без реальной проверки в студии - если не работает - скажите)

 

Попробовал вот так 

 

Procedure DrawYou3d(Const Count:Integer);
var
     You3d:Array of TRectangle3D;
     i:integer;
Begin
    SetLength(You3d, Count);
 
    for i:=Low(You3d) to High(You3d) do
    BEGIN
        You3d:=TRectangle3D.Create(self); // вот тут
        You3d.Parent:=Form1;
    END
End;
 
но выводится ошибка в [dcc32 Error] Unit1.pas(34): E2003 Undeclared identifier: 'self'
 
PS так же хотелось бы чтобы фигуры рисовались по очереди, то есть нажал кнопку появился первый еще раз нажал появился второй и т.д.
Ссылка на комментарий
  • 0

1. вместо self - form1, или другой родитель, или nil

По одной? ок. для этого:

1: You3d:Array of TRectangle3D; - переносишь в приват раздел твоей формы(form1=class(tForm) private You3d:Array of TRectangle3D).

2. SetLength(You3d, 0); - в конструкторе инициализируешь массив (вот тут могу врать - возможно это необязательно)

3. Procedure DrawYou3d; - создаешь в Public разделе класса(того же класса где и писал You3d:Array of TRectangle3D)

в реализации метода пишешь:

 

Procedure TYouClass.DrawYou3d;

Begin
    SetLength(You3d, High(You3d)+1);
    You3d[High(You3d)]:=TRectangle3D.Create(self); // вот тут
   You3d[High(You3d)].Parent:=Form1;
End;
 
по желанию(ну или обязательно, тоже не помню) можешь в параметрах процедуры передать позицию фигуры
Procedure DrawYou3d(Const X,Y:Single);/\
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...