Текущий архив: 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.45 MB
Время: 0.008 c