Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как использовать Флеш или Gif анимацию 
:(
    Опции темы
Alex103
  Дата 12.1.2005, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Как мне например разместить Флеш или Gif анимацию у себя на форме и чтобы что-то двигалось!!!Ну в смысле картинка!!!!!! smile


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Akella
Дата 12.1.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Все эти статьи из DelphiWorld.
К сожалению ни в FAQ`е, ни в DRKB не нашел

Разве возможно совместить Флэш-ролики и Дельфи-приложения. Раньше я думал что НЕТ. Но теперь я знаю не только, что это возможно, но и знаю как это делается!!! И сейчас я вам расскажу об этом. Во-первых хочется отметить преимущества использования флэш-роликов в ваших программах. Если вы сумеете гармонично вписать небольшой флэш-ролик в вашу программу, то несомненно внешний вид программы будет намного привлекательнее (главное не переборщить, увлекаясь дизайном, не надо забывать о том что программа должна быть удобна и проста в использовании! ).

Итак, как же совместить Флэш и Дельфи? (Надеюсь, что у вас Флэш установленsmile)

Запустите Дельфи и выберите пункт меню Component->Import ActiveX Control... Перед вами откроется диалоговое окно с заголовком Import ActiveX Control. В разделе Registered Controls выберите Shockwave Flash. В разделе Pallete Page... Выберите страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name... путь к папке куда будет установлен компонент.

Нажмите на кнопку Install. Перед вами появится окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент (вы можете установить как в уже существующий, так и в новый пакет). Затем перед вами появится окно редактирования выбранного пакета и Дельфи вас спросит: "...Package will be rebuilt. Continue?". Ответьте Yes. Все готово теперь можно использовать флэш в ваших приложениях!!!

Теперь, чтобы показать вам как пользоваться этим компонентом, попробуем вместе сделать программу для просмотра *.SWF файлов. Для этого нам понадобятся следующие компоненты: TShockwaveFlash (для удобства назовите его просто Flash1), TTrackBar, TTimer, TOpendialog и три кнопки TButton ("открыть", "старт" и "стоп").

Для начала установим необходимые свойства OpenDialog'a

Свойство Filter может быть таким: Флэш-ролики|*.swf

Свойство DefaultExt должно быть: *.swf

Для Timer'a нужно установить свойство Interval равным 1.

Для TShockwaveFlash:

Name сделайте равным Flash1

Свойство Playing установите в false

Свойство BGColor, установите как вам хочется (цвет фона)

Теперь напишем обработчик события OnClick для кнопки, которая вызывать OpenDialog:



if open1.Execute then
begin
flash1.Movie := open1.FileName;
{это делается для того, чтобы потом можно было
перемещаю ползунок посмотреть каждый кадр ролика}
trackbar1.Max := flash1.TotalFrames;
end;




В обработчик события OnClick для второй кнопки ("Старт") напишем:



flash1.Play;




Ну тут вообще все просто! Почти таким же образом это будет выглядеть для третьей кнопки ("Стоп"):



flash1.Stop;




Теперь сделаем, чтобы при перемещении ползунка Trackbar'a мы могли посмотреть каждый кадр (событие OnChange):



if Flash1.IsPlaying = true then
Flash1.Stop; {если ролик проигрывается, то надо его остановить}
{открываем кадр номер которого соответствует позиции ползунка}
flash1.GotoFrame(trackbar1.position);




Ну и наконец осталось сделать чтобы при проигрывании ролика ползунок перемещался, указывая сколько осталось и сколько прошло. Для этого то мы и используем Timer. В обработчик события OnTimer,напишем:



trackbar1.Position:=flash1.CurrentFrame;




Приведу полный код приложения:



unit flash;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls;

type
TForm1 = class(TForm)
Flash1: TShockwaveFlash;
Button1: TButton;
TrackBar1: TTrackBar;
Open1: TOpenDialog;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if open1.Execute then
begin
flash1.Movie:=open1.FileName;
trackbar1.Max:=flash1.TotalFrames;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
flash1.Play;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if Flash1.IsPlaying=true then
Flash1.Stop;
flash1.GotoFrame(trackbar1.position);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
flash1.Stop;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
trackbar1.Position:=flash1.CurrentFrame;
end;

end.

Добавлено @ 09:47
Flash позволяет создавать анимацию для растровой графики и включать её в web-страницы. Многие хорошо знают этот продукт фирмы Macromedia. Если у вас когда-нибудь возникало желание воспроизводить flash'овские movie-клипы [swf-файлы] на своей форме, то теперь вашему желанию суждено сбыться! Для этого нужно сделать следующее:

Скачайте файл SWFLASH.OCX
Импортируйте этот элемент управления ActiveX в среду программирования Delphi. Для этого из меню Component возьмите команду Import ActiveX Control. В появившемся окне щелкните на кнопке Add и укажите на скаченный файл [SWFLASH.OCX]. В том случае, если у вас уже установлен Flash - вам не надо скачивать этот файл - вы его сможете найти по следующему пути: C:\Windows\System\Macromed\Flash

Добавлено @ 09:49

Проиграть Flash-файл в приложении
Код

uses
 ShockwaveFlashObjects_TLB; // will be used automatically

implementation

{$R *.DFM}
{$R flash.res} // your new created resource
{...}

procedure TForm1.FormCreate(Sender: TObject);
var
 SystemDir: array[0..MAX_PATH] of Char;
 SWFDir, AppDir: string;
 Fres: TResourceStream;
 Ffile: TFileStream;
begin
 GetSystemDirectory(@SystemDir, MAX_PATH);
 SWFDir := SystemDir + '\macromed\flash\';
 GetDir(0, AppDir); // Get current directory

 //check whether the sw-flash ocx is already installed
 if FileExists(SWFDir + 'swflash.ocx') = False then
 begin
   //create directories if needed and extract file from resource.
   {$i-} //compiler directive to suppress i/o error messages
   MkDir(SystemDir + '\macromed');
   MKDir(SystemDir + '\macromed\flash');
   {$i+}
   Fres := TResourceStream.Create(0, 'SHOCKWAVEOCX', RT_RCDATA);
   Ffile := TFileStream.Create(SWFDir + 'swflash.ocx', fmCreate);
   Ffile.CopyFrom(Fres, Fres.Size);
   Fres.Free;
   Ffile.Free;

   //register ocx (simple but useful)
   WinExec(PChar('regsvr32 /s ' + SWFDir + 'swflash.ocx'), SW_HIDE);
 end;
 // extract ShockwaveFile from resource to application directory
 Fres := TResourceStream.Create(0, 'SHOCKWAVEFILE', RT_RCDATA);
 Ffile := TFileStream.Create('flashmovie.swf', fmCreate);
 Ffile.CopyFrom(Fres, Fres.Size);
 Fres.Free;
 Ffile.Free;

 //Assign the extracted swf file to your TShockwaveFlash object
 FlashMovie.Movie := AppDir + '\flashmovie.swf';
end;

(*
 If you dont want to have the popup menu displayed on right click
 you may chose menu property of TShockWave to false.
*)


Это сообщение отредактировал(а) dsergey - 12.1.2005, 09:50
PM MAIL   Вверх
Alex103
Дата 13.1.2005, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Цитата(dsergey @ 12.1.2005, 09:46)
Все эти статьи из DelphiWorld.
К сожалению ни в FAQ`е, ни в DRKB не нашел

Разве возможно совместить Флэш-ролики и Дельфи-приложения. Раньше я думал что НЕТ. Но теперь я знаю не только, что это возможно, но и знаю как это делается!!! И сейчас я вам расскажу об этом. Во-первых хочется отметить преимущества использования флэш-роликов в ваших программах. Если вы сумеете гармонично вписать небольшой флэш-ролик в вашу программу, то несомненно внешний вид программы будет намного привлекательнее (главное не переборщить, увлекаясь дизайном, не надо забывать о том что программа должна быть удобна и проста в использовании! ).

Итак, как же совместить Флэш и Дельфи? (Надеюсь, что у вас Флэш установленsmile)

Запустите Дельфи и выберите пункт меню Component->Import ActiveX Control... Перед вами откроется диалоговое окно с заголовком Import ActiveX Control. В разделе Registered Controls выберите Shockwave Flash. В разделе Pallete Page... Выберите страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name... путь к папке куда будет установлен компонент.

Нажмите на кнопку Install. Перед вами появится окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент (вы можете установить как в уже существующий, так и в новый пакет). Затем перед вами появится окно редактирования выбранного пакета и Дельфи вас спросит: "...Package will be rebuilt. Continue?". Ответьте Yes. Все готово теперь можно использовать флэш в ваших приложениях!!!

Теперь, чтобы показать вам как пользоваться этим компонентом, попробуем вместе сделать программу для просмотра *.SWF файлов. Для этого нам понадобятся следующие компоненты: TShockwaveFlash (для удобства назовите его просто Flash1), TTrackBar, TTimer, TOpendialog и три кнопки TButton ("открыть", "старт" и "стоп").

Для начала установим необходимые свойства OpenDialog'a

Свойство Filter может быть таким: Флэш-ролики|*.swf

Свойство DefaultExt должно быть: *.swf

Для Timer'a нужно установить свойство Interval равным 1.

Для TShockwaveFlash:

Name сделайте равным Flash1

Свойство Playing установите в false

Свойство BGColor, установите как вам хочется (цвет фона)

Теперь напишем обработчик события OnClick для кнопки, которая вызывать OpenDialog:



if open1.Execute then
begin
flash1.Movie := open1.FileName;
{это делается для того, чтобы потом можно было
перемещаю ползунок посмотреть каждый кадр ролика}
trackbar1.Max := flash1.TotalFrames;
end;




В обработчик события OnClick для второй кнопки ("Старт") напишем:



flash1.Play;




Ну тут вообще все просто! Почти таким же образом это будет выглядеть для третьей кнопки ("Стоп"):



flash1.Stop;




Теперь сделаем, чтобы при перемещении ползунка Trackbar'a мы могли посмотреть каждый кадр (событие OnChange):



if Flash1.IsPlaying = true then
Flash1.Stop; {если ролик проигрывается, то надо его остановить}
{открываем кадр номер которого соответствует позиции ползунка}
flash1.GotoFrame(trackbar1.position);




Ну и наконец осталось сделать чтобы при проигрывании ролика ползунок перемещался, указывая сколько осталось и сколько прошло. Для этого то мы и используем Timer. В обработчик события OnTimer,напишем:



trackbar1.Position:=flash1.CurrentFrame;




Приведу полный код приложения:



unit flash;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls;

type
TForm1 = class(TForm)
Flash1: TShockwaveFlash;
Button1: TButton;
TrackBar1: TTrackBar;
Open1: TOpenDialog;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if open1.Execute then
begin
flash1.Movie:=open1.FileName;
trackbar1.Max:=flash1.TotalFrames;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
flash1.Play;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if Flash1.IsPlaying=true then
Flash1.Stop;
flash1.GotoFrame(trackbar1.position);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
flash1.Stop;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
trackbar1.Position:=flash1.CurrentFrame;
end;

end.

Добавлено @ 09:47
Flash позволяет создавать анимацию для растровой графики и включать её в web-страницы. Многие хорошо знают этот продукт фирмы Macromedia. Если у вас когда-нибудь возникало желание воспроизводить flash'овские movie-клипы [swf-файлы] на своей форме, то теперь вашему желанию суждено сбыться! Для этого нужно сделать следующее:

Скачайте файл SWFLASH.OCX
Импортируйте этот элемент управления ActiveX в среду программирования Delphi. Для этого из меню Component возьмите команду Import ActiveX Control. В появившемся окне щелкните на кнопке Add и укажите на скаченный файл [SWFLASH.OCX]. В том случае, если у вас уже установлен Flash - вам не надо скачивать этот файл - вы его сможете найти по следующему пути: C:\Windows\System\Macromed\Flash

Добавлено @ 09:49

Проиграть Flash-файл в приложении
Код

uses
 ShockwaveFlashObjects_TLB; // will be used automatically

implementation

{$R *.DFM}
{$R flash.res} // your new created resource
{...}

procedure TForm1.FormCreate(Sender: TObject);
var
 SystemDir: array[0..MAX_PATH] of Char;
 SWFDir, AppDir: string;
 Fres: TResourceStream;
 Ffile: TFileStream;
begin
 GetSystemDirectory(@SystemDir, MAX_PATH);
 SWFDir := SystemDir + '\macromed\flash\';
 GetDir(0, AppDir); // Get current directory

 //check whether the sw-flash ocx is already installed
 if FileExists(SWFDir + 'swflash.ocx') = False then
 begin
   //create directories if needed and extract file from resource.
   {$i-} //compiler directive to suppress i/o error messages
   MkDir(SystemDir + '\macromed');
   MKDir(SystemDir + '\macromed\flash');
   {$i+}
   Fres := TResourceStream.Create(0, 'SHOCKWAVEOCX', RT_RCDATA);
   Ffile := TFileStream.Create(SWFDir + 'swflash.ocx', fmCreate);
   Ffile.CopyFrom(Fres, Fres.Size);
   Fres.Free;
   Ffile.Free;

   //register ocx (simple but useful)
   WinExec(PChar('regsvr32 /s ' + SWFDir + 'swflash.ocx'), SW_HIDE);
 end;
 // extract ShockwaveFile from resource to application directory
 Fres := TResourceStream.Create(0, 'SHOCKWAVEFILE', RT_RCDATA);
 Ffile := TFileStream.Create('flashmovie.swf', fmCreate);
 Ffile.CopyFrom(Fres, Fres.Size);
 Fres.Free;
 Ffile.Free;

 //Assign the extracted swf file to your TShockwaveFlash object
 FlashMovie.Movie := AppDir + '\flashmovie.swf';
end;

(*
 If you dont want to have the popup menu displayed on right click
 you may chose menu property of TShockWave to false.
*)

Благодарю заранее я еще єто не читал ті такой текст отгрохал круто прямо лекция огромное спасибо я попробую еше напишу!!!!!


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
Alex103
Дата 13.1.2005, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Цитата(dsergey @ 12.1.2005, 09:46)


Запустите Дельфи и выберите пункт меню Component->Import ActiveX Control... Перед вами откроется диалоговое окно с заголовком Import ActiveX Control. В разделе Registered Controls выберите Shockwave Flash. В разделе Pallete Page... Выберите страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name... путь к папке куда будет установлен компонент.

Нажмите на кнопку Install. Перед вами появится окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент (вы можете установить как в уже существующий, так и в новый пакет). Затем перед вами появится окно редактирования выбранного пакета и Дельфи вас спросит: "...Package will be rebuilt. Continue?". Ответьте Yes. Все готово теперь можно использовать флэш в ваших приложениях!!!

Почемуто у меня не устанавливаеться этот компонент
Добавлено @ 08:41
Цитата(Alex103 @ 13.1.2005, 08:36)
Цитата(dsergey @ 12.1.2005, 09:46)


Запустите Дельфи и выберите пункт меню Component->Import ActiveX Control... Перед вами откроется диалоговое окно с заголовком Import ActiveX Control. В разделе Registered Controls выберите Shockwave Flash. В разделе Pallete Page... Выберите страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name... путь к папке куда будет установлен компонент.

Нажмите на кнопку Install. Перед вами появится окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент (вы можете установить как в уже существующий, так и в новый пакет). Затем перед вами появится окно редактирования выбранного пакета и Дельфи вас спросит: "...Package will be rebuilt. Continue?". Ответьте Yes. Все готово теперь можно использовать флэш в ваших приложениях!!!

Почемуто у меня не устанавливаеться этот компонент

может у меня флеш не установлен но я только что установил Флеш плеер 6.0


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
p0s0l
Дата 13.1.2005, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 16
Всего: 112



Перенесено из раздела Дельфи


--------------------
С уважением, г-н Посол.
PM   Вверх
Стрелок
Дата 5.2.2005, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.2.2005

Репутация: нет
Всего: нет



я извеняюсь , не хочу показаться ламером , но помоему вся эта фишка не катит под Delphi 8 .
Если кто знает , как ставить флаш ролик в прогу на Delphi 8 , то помогите .
PM MAIL ICQ   Вверх
Vit
Дата 6.2.2005, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 1
Всего: 207



Под Дельфи 8 нужен Flash Player для .net


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.