Advanced Draw
Falk0ner, вс, 06/07/2008 - 15:35.
Посмотрите этот dodraw.zip примерчик, для более ясного понимания. А теперь недокументированная фишка! Забываем то, что написано выше и читаем дальше. Cоздадим спрайт таким образом:
И теперь в процедуре DoMove можно задать Angle (угол поворота спрайта) и Alpha (прозрачность спрайта). Примерно так:
Автор: DaddyWEB-сайт: http://daddy.mirgames.ru Кручу-верчу, обмануть хочу, или как использовать продвинутые методы вывода спрайтов. В классе TSprite есть три метода: DoDraw, DoCollision и DoMove Чтобы заставить спрайт созданный таким образом:
TPlayer = class(TImageSprite)
end;
end;
выводится через продвинутые методы (DrawRotate, DrawAplha, DrawSub, DrawWave, StretchDraw), нужно "заглушить" стандартный вывод при создании объекта. Вот так:
type
THero = class(TImageSprite)
Angle:integer;
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
procedure DoDraw; override; // вот здесь
end;
THero = class(TImageSprite)
Angle:integer;
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
procedure DoDraw; override; // вот здесь
end;
Теперь в процедуре DoDraw выводим спрайт нужным нам способом. Вот так:
procedure THero.DoDraw;
begin
image.drawrotate(form1.DXDraw.Surface,
round(x)+16,
round(y)+16,
image.width,
image.height,
round(animpos),0.5,0.5,Angle);
end;
begin
image.drawrotate(form1.DXDraw.Surface,
round(x)+16,
round(y)+16,
image.width,
image.height,
round(animpos),0.5,0.5,Angle);
end;
Посмотрите этот dodraw.zip примерчик, для более ясного понимания. А теперь недокументированная фишка! Забываем то, что написано выше и читаем дальше. Cоздадим спрайт таким образом:
TPlayer = class(TImageSpriteEx)
protected
procedure DoMove(MoveCount: Integer); override;
end;
protected
procedure DoMove(MoveCount: Integer); override;
end;
И теперь в процедуре DoMove можно задать Angle (угол поворота спрайта) и Alpha (прозрачность спрайта). Примерно так:
type
THero = class(TImageSpriteEx)
Angle:integer;
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
end;
procedure TPlayer.DoMove(MoveCount: Integer);
begin
X:=100;
Y:=100;
Angle:=60;
Alpha:=150;
end;
THero = class(TImageSpriteEx)
Angle:integer;
protected
procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
procedure DoMove(MoveCount: Integer); override;
end;
procedure TPlayer.DoMove(MoveCount: Integer);
begin
X:=100;
Y:=100;
Angle:=60;
Alpha:=150;
end;
DelphiWorld 6.0
Отправить комментарий