Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 11:39   #1
EridorBlade
CAE Engineer
Пользователь
 
Аватар для EridorBlade
 
Регистрация: 10.03.2011
Сообщений: 75
По умолчанию Вопрос по DelphiX.

Доброго времени суток.
На моей форме находится DXDraw, который выводит спрайтовую анимацию. При открытии формы сначала появляется черный квадрат, а только потом начинает работать спрайтовая анимация. Как можно сделать чтобы при открытии формы на месте DXDraw был не черный квадрат, а хотя бы какое-то фоновое изображение(а в идеале первый кадр спрайтовой анимации, что наверно вообщем-то одно и то же )? Насколько я понял у DXDraw нету свойства "прозрачность", если есть поправьте меня пожалуйста .

У меня реализовано вот так:

Код:
type
  TTitleWindow = class(TImageSprite)
  private 
  public
  constructor Create(AParent: TSprite); override;
end;

constructor TTitleWindow.Create(AParent: TSprite);
begin
  inherited Create(AParent);
  X :=  0;
  Y :=  0;
  Image := Form4.DXImageList2.Items.Find('TitleFonSpr');
  AnimCount:=Image.PatternCount; 
  AnimLooped:=True;
  AnimSpeed:=80/1000;
  Width := Image.Width;
  Height := Image.Height;
  Z  := 2;
end;



procedure TForm4.FormCreate(Sender: TObject);
begin
  DXImageList2.Items[0].picture.LoadFromFile('SysAnimate\SpriteAnimate\Menu\MainTitleFonSpr.bmp');
  DXImageList2.Items.MakeColorTable;
  DXDraw2.ColorTable := DXImageList2.Items.ColorTable;
  DXDraw2.DefColorTable := DXImageList2.Items.ColorTable;

  TTitleWindow.Create(DXSpriteEngine2.Engine);
end;

procedure TForm4.DXTimer2Timer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw2.CanDraw then exit;
  DXSpriteEngine2.Move(1);
  DXDraw2.Surface.Fill(0);
  DXSpriteEngine2.Draw;
  DXDraw2.Flip;
end;

Возможно вы своим незамутненным взглядом увидите какие нибудь ошибки . Или поделитесь своим опытом. Заранее спасибо.

Последний раз редактировалось JTG; 10.03.2011 в 11:45.
EridorBlade вне форума Ответить с цитированием
Старый 11.03.2011, 23:26   #2
EridorBlade
CAE Engineer
Пользователь
 
Аватар для EridorBlade
 
Регистрация: 10.03.2011
Сообщений: 75
По умолчанию

Эх . Никто не знает? Или может быть я вопрос плохо сформулировал?)
EridorBlade вне форума Ответить с цитированием
Старый 12.03.2011, 07:49   #3
xexxex
Пользователь
 
Регистрация: 31.07.2010
Сообщений: 52
По умолчанию

Цитата:
При открытии формы сначала появляется черный квадрат, а только потом начинает работать спрайтовая анимация.
Видать у таймера большой интервал.
Попробовать в Form4.OnShow пнуть таймер ручками - вызвать DXTimer2Timer.
Или при первом NC_PAINT...
xexxex вне форума Ответить с цитированием
Старый 12.03.2011, 19:24   #4
EridorBlade
CAE Engineer
Пользователь
 
Аватар для EridorBlade
 
Регистрация: 10.03.2011
Сообщений: 75
По умолчанию

xexxex к сожалению так как посоветовал ты у меня что-то не получилось
Решил проблему следующим образом (на мой взгляд довольно кривым)
Поставил в FormCreate
DXDraw2.Visible:=False;
а в процедуре DXTimer2Timer после DXDraw2.Flip;
поставил DXDraw2.Visible:=True;

Эффект черного квадрата ушел. Если кто знает и кому не жалко поделиться, прошу предложить более красивый и оптимальный вариант .
EridorBlade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еще один вопрос по DelphiX... Andrew101095 Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 25.07.2010 20:55
DelphiX Nazar1994 Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 27.10.2009 18:05
DelphiX program123 Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 13.03.2009 15:26
скачать DelphiX GHO§T Свободное общение 8 28.09.2008 22:25