Всем доброго времени суток! Решил написать что то вроде скринсейвера, что то наподобие ICS Phase Beam
Скрин
Давно собирался научиться работать с конструктором Делфи. Наконец то, добрался до него, и тут же возникли проблемы. Суть программы примерно в следующем:
Существует тип Drop, который состоит из пока что
Sphere: TSphere и
GlowEffect: TGlowEffect. При запуске формы, создается n-ое число таких Drop'ов (с заданными параметрами Sphere и Glow), каждая из которых имеет свой угол наклона, и анимацию. Но для начала надо хотя бы создать один Drop при нажатии на Button1. Создать Drop получилось, но для того, чтобы он отобразился на форме, нужно вызвать процедуру RebuildMesh, которая находится в protected в описании TSphere. Я попробовал тупо перенести процедуру в public, но при нажатии на кнопку выводит "доступ запрещен". Может, у кого нибудь найдутся похожие примеры. Буду признателен.
Код:
unit LWindow;
interface
uses
System.SysUtils, System.Types, System.Variants, System.UITypes,
System.Classes, FMX.Types, FMX.Graphics, FMX.Dialogs, FMX.Types3D, FMX.Forms,
FMX.Forms3D, FMX.Controls3D, FMX.Controls, FMX.StdCtrls, FMX.Layers3D, FMX.Objects3D,
FMX.Effects;
type
TDrop = class (TComponent)
Sphere: TSphere;
GlowEffect: TGlowEffect;
public
Constructor Create(AOwner: TComponent);override;
Destructor Destroy;
end;
TForm3 = class(TForm3D)
Layer3D1: TLayer3D;
Button1: TButton;
Drop: TDrop;
Sphere1: TSphere;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
end;
var
Form3: TForm3;
implementation
{$R *.fmx}
Constructor TDrop.Create(AOwner: TComponent);
begin
inherited;
Sphere:= TSphere.Create(AOwner);
GlowEffect:= TGlowEffect.Create(Sphere);
Self.Sphere.SubdivisionsAxes:=16;
Self.Sphere.SubdivisionsHeight:=12;
Self.Sphere.Height:=6;
Self.Sphere.Width:=1;
Self.Sphere.Depth:=1;
end;
Destructor TDrop.Destroy;
begin
Self.Free;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
Drop1: TDrop;
begin
//Drop1:= TDrop.Create(Self);
Form3.Sphere1.Create(Form3);
end;
end.