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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2007, 11:18   #1
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию Использование *.swf

можно ли в Делфи использовать .swf-ролики(flash-ролики)?
если да,то какой для этого нужен компонент?и сохранится ли в самом ролике скрипт?
Романнн вне форума Ответить с цитированием
Старый 09.12.2007, 11:54   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

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

Нажмите на кнопку и установи этот компонент. Теперь можно с помощью этого компонента юзать flash.
Теперь как пользоваться этим компонентом, попробуем сделать программу для просмотра *.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; {это делается для того, чтобы потом можно было перемещаю ползунок посмотреть каждый кадр ролика}

В обработчик события OnClick для второй кнопки ("Старт") напишем:
flash1.Play;
Ну тут вообще все просто! Почти таким же образом это будет выглядеть для третьей кнопки ("Стоп"):
flash1.Stop;
Теперь сделаем, чтобы при перемещении ползунка Trackbar'a мы могли посмотреть каждый кадр (событие OnChange):
if Flash1.IsPlaying=true then Flash1.Stop; {если ролик проигрывается, то надо его остановить}
flash1.GotoFrame(trackbar1.position ); {открываем кадр номер которого соответствует позиции ползунка}
Ну и наконец осталось сделать чтобы при проигрывании ролика ползунок перемещался, указывая сколько осталось и сколько прошло. Для этого то мы и используем Timer. В обработчик события OnTimer, напишем:
trackbar1.Position:=flash1.CurrentF rame;
полный код приложения:
Код:
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.
I like WPF

Последний раз редактировалось kommunist; 09.12.2007 в 11:57.
kommunist вне форума Ответить с цитированием
Старый 09.12.2007, 12:03   #3
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию

спасибо......щас попробую сделать
Романнн вне форума Ответить с цитированием
Старый 31.07.2008, 03:24   #4
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

это по любому работает, главное установи activeX и все получится.
Черничный вне форума Ответить с цитированием
Старый 31.07.2008, 22:04   #5
JRcoker
Форумчанин
 
Аватар для JRcoker
 
Регистрация: 18.07.2008
Сообщений: 119
По умолчанию

Делал всё как ты сказал kommunist...TShockwaveFlash не вылезает не где...
Улыбайся...Люди любят идиотов...
JRcoker вне форума Ответить с цитированием
Старый 04.08.2008, 04:18   #6
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

в каком смысле не вылезает нигде? она появится на вкалдке ActiveX
Черничный вне форума Ответить с цитированием
Старый 12.04.2009, 13:15   #7
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Как думаите реально изобрести велосипед. Его уже изобрели, но только он денег стоит. Мне надо научится проигрывать флеш и так же его коннектить к интернету. Вообщем полный набор. Может где нибудь информация (статьи) есть. Или документация формата .swf.
Почему не ActiveX, потому что есть флешка одна тут, и чет не хочет она проигрыватся ( хотя в опере все ок ) и еще тут, дело такое, если даже и юзать ActiveX, надо научится тогда при обновлении каждого кадра флешки получать этот кадр.
BOBAH13 вне форума Ответить с цитированием
Старый 12.04.2009, 13:26   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Счастье

У меня есть компонент специальный для проигрывания Swf-файлов...

Компонент FlashPlayerControl... Только там поперёк надпись "DEMO VERSION"...
Денег требует, гад...

А в принципе можно просто TWebBrowser использовать...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 12.04.2009, 15:01   #9
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Допустим я согласен юзать TShockwaveFlash. Но к примеру вот два урл, через opera и firefox все ок, но вот через этот ActiveX не работает:

Код:
const
  movie_url = 'http://www.spinletslab.com/c/a2/18aab258fc654847bf8c765a64ea98c3/MTg5Ng==?params=18aab258fc654847bf8c765a64ea98c3@MTg5Ng==';
  movie_url2 = 'http://www.deezer.com/embedded/widget.swf?path=8336676';

...

begin
  ShockwaveFlash1.Movie := movie_url2;
  ShockwaveFlash1.Play;
end;
BOBAH13 вне форума Ответить с цитированием
Старый 12.04.2009, 15:12   #10
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Про "TShockwaveFlash" не слышал... Есть ссыль на этот компонент..?

А обязательно брать этот Swf-файл из интернета?
Нельзя ли его на локальный диск заранее скачать или может даже в ресурсы программы зашить..?

К тому же как я понял та ссыль не на сам Swf-файл...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование BlockRead Никки Общие вопросы Delphi 17 22.04.2008 08:23
использование таймера KancJler Помощь студентам 13 19.04.2008 01:13
использование using namespace std; che Общие вопросы C/C++ 7 11.10.2007 17:13
Использование длл Anatolij Win Api 1 02.01.2007 19:54