Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DelphX --- Отобразить спрайт [D7, XP]


bulavkin ©   (2006-06-26 18:05:00) 

Доброго всем вечера!
Задача после запуска приложения показать спрайт.


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DXDraws, DXClass, DXInput, DXSprite;

type
 TForm1 = class(TForm)
   DXDraw1: TDXDraw;
   DXImageList1: TDXImageList;
   DXSpriteEngine1: TDXSpriteEngine;
   DXInput1: TDXInput;
   DXTimer1: TDXTimer;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
DXImageList1.Items.Find('fon').Draw(DXDraw1.Surface, 0, 0, 8);
end;

end.


Но не чего не происходит.

Подскажи где я ошибся?


bulavkin   (2006-06-27 15:02:00) [1]

Вот пример в котором я двигаю спрайт слева направо по горизонтали


procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);
var
i: integer;
begin
if not DXDraw.CanDraw then exit;
DXDraw.Surface.Fill( 0 );
 for i:=0 to 700 do
   begin
   DXImageList.Items.Find('hero.bmp').Draw(DXDraw.Surface, i, 0, 0);
   DXDraw.Flip;

   end;
end;


Все работает, но есть у этого примера недостаток:
за спрайтом остается шлейф смазанный.
Откуда он берется и как от него избавиться?
Спасибо!


bulavkin   (2006-06-26 18:38:00) [2]

Хмм... очень может быть =))
Сасибо


tButton   (2006-06-26 18:36:00) [3]

DXImageList1.Items.Find('fon').Draw(DXDraw1.Surface, 0, 0, 8);
а последний параметр функции это случаем не индекс спрайта? сдаётся мне что спрайт у тебя один и должен быть там вместо восьмёрки ноль


bulavkin   (2006-06-26 18:24:00) [4]

К слову сказать все равно не плучилось.
Видно только черный фон =(


bulavkin   (2006-06-26 18:15:00) [5]


> tButton ©   (26.06.06 18:09) [1]

Вообще изначально я ставил перед собой задачу показать фоновую картинку а поверх ее статический спрайт.
В конечном итоге запутался и решил все по порядку :)
Спасибо.


tButton   (2006-06-26 18:09:00) [6]

да нет. всё правильно. только отображением ты и не думал заниматься =)
насколько я помню
в обработчике таймера это всё прописывается

if DXDraw1.CanDraw then begin
 DXImageList1.Items.Find('fon').Draw(DXDraw1.Surface, 0, 0, 8);
 
 DXDraw1.Surface.Canvas.Release;
 DXDraw1.Flip; // <-- вот эта функция меняет местами передний и задний буфер и тем самым отображает твою картинку
end;


а вообще - поковырялся бы в примерах сперва


Наверх

Титульная страница Поиск, карта сайта Написать письмо