|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Скринсейвер, конструктор
Всем доброго времени суток! Решил написать что то вроде скринсейвера, что то наподобие 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. |