Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.11;
Скачать: CL | DM;

Вниз

DELPHIX   Найти похожие ветки 

 
Vin_Ghost   (2003-05-13 23:10) [0]

Привет! У меня вопрос:
Например, у меня есть класс:

type
THero = class(TImageSprite)
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
public
Constructor Create(AParent: TSprite); Override;
end;

и я создал с помощью этого конструктора с десяток спрайтов:

constructor THero.Create(AParent: TSprite);
Begin
inherited Create(AParent);
Image := form1.DXImageList1.Items.Find("Asterix");
Width := Image.Width;
Height := Image.Height;
X := random(100); ( 200) Привет! У меня вопрос:
Например, у меня есть класс:

type
THero = class(TImageSprite)
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
public
Constructor Create(AParent: TSprite); Override;
end;

и я создал с помощью этого конструктора с десяток спрайтов:

constructor THero.Create(AParent: TSprite);
Begin
inherited Create(AParent);
Image := form1.DXImageList1.Items.Find("Asterix");
Width := Image.Width;
Height := Image.Height;
X := random(100);
Y := random(200);
Z := 2;
AnimStart := 0;
AnimCount := 6;
AnimLooped := True;
AnimSpeed := 15/1000;
End;

Как мне потом эти спрайты различать и обращаться к ним програмно? Ведь должны же эти экземпляры как различаться?
срочно нужно


 
Плохой человек   (2003-05-13 23:55) [1]

Добавь там свойство Name.


 
Михаил Бесчетнов   (2003-05-14 02:48) [2]

Можно (и, вероятно, нужно) создать коллекцию на основе TList, куда добавлять все создаваемые объекты. Каждому объекту даешь имя (или код какой нибудь). Потом у коллекции делаешь функцию типа "function GetByName(Value: string): THero;", которая бы искала в базе объект с нужным именем. После этого перестаешь думать и по необходимости обращаещся - "HeroBase.GetByName("Termite")"


 
Владимир Васильев ©   (2003-05-14 11:23) [3]

Всё очень просто:

constructor THero.Create(AParent: TSprite);


Если родителем (AParent) будет SpriteEngine.Engine то он и будет
следить за всеми своими спрайтами, например:
SpriteEngine.Dead - удалить недействительные объекты;
SpriteEngine.Move - переместить
SpriteEngine.Draw - draw Sprites


............
For i:=1 to HeroCountMax do
With THero.Create(MainForm.SpriteEngine.Engine) do
..................

тогда, например :


procedure Attack;
Var
i : integer;
begin
// need optimiztion
With MainForm do
begin
For i:=0 to SpriteEngine.Engine.AllCount-1 do
if (SpriteEngine.Engine.Items[i] is THero)
( SpriteEngine.Engine.Items[i]) Всё очень просто:

constructor THero.Create(AParent: TSprite);


Если родителем (AParent) будет SpriteEngine.Engine то он и будет
следить за всеми своими спрайтами, например:
SpriteEngine.Dead - удалить недействительные объекты;
SpriteEngine.Move - переместить
SpriteEngine.Draw - draw Sprites


............
For i:=1 to HeroCountMax do
With THero.Create(MainForm.SpriteEngine.Engine) do
..................

тогда, например :


procedure Attack;
Var
i : integer;
begin
// need optimiztion
With MainForm do
begin
For i:=0 to SpriteEngine.Engine.AllCount-1 do
if (SpriteEngine.Engine.Items[i] is THero)
then THero(SpriteEngine.Engine.Items[i]).doAttack;
end;
end;






Страницы: 1 вся ветка

Текущий архив: 2003.09.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
14-33757
dimodim
2003-08-24 14:40
2003.09.11
Люди беда вДЛЛ


1-33555
Lamerr
2003-08-29 09:26
2003.09.11
Изменение Options StringGrid-а в ран-тайм


7-33823
Zilog
2003-06-16 14:31
2003.09.11
Как можно организовать передачу данных по паре?


3-33470
SPIRIT
2003-08-20 16:15
2003.09.11
Ваще касяк !!!


3-33512
sargos
2003-08-19 03:22
2003.09.11
Как избежать лишний трафик?