Мониторинг обменных курсов валют
18c0693f

Проигрывание Flash ролика


Создаём на CBuilder новый проект с единственной формой Form1. Из палитры компонентов ActiveX помещаем на форму компоненту ShackwaveFlash. Заносим с помощью инспектора объектов или программно в свойство ShockwaveFlash1->Movie полный путь и имя файла Flash ролика (расширение файла swf). В примерах Flash ролик помещён в тот же каталог что и exe-файл, поэтому в них свойство удобно менять программно, размещая код в обработчике события создания формы:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

ShockwaveFlash1->Movie = ExtractFilePath
(Application->ExeName) + "ball.swf";

}

Установите свойства ShockwaveFlash1->Loop и ShockwaveFlash1->Playing в true. Нажмем F9, чтобы провести промежуточную проверку приложения. На форме должен двигаться и деформироваться овал. Если вместо этого на форме просто белый квадрат, то скорее всего неправильно установлено свойство ShockwaveFlash1->Movie (файл ball.swf находится в ).

Отметим, что свойства, методы и поля класса TShockwaveFlash можно просмотреть в файле ShockwaveFlashObjects_OCX.h. Рекомендуем сделать это. Информацию о методах можно найти на сайте компании Macromedia, в описании и в Help пакета Flash.

Теперь модифицируем наше приложение так, чтобы продемонстрировать возможности управления ходом выполнения Flash ролика. Вид главной формы представлен на рис. 5. Кнопки Stop, Play, Back, Forward, Rewind вызывают одноименные методы ShockwaveFlash1:

При нажатии кнопок Back, Forward, Rewind, если ролик проигрывается то, перед выполнением соответствующего метода производится остановка методом Stop.

Рис. 6. Вид формы

Кнопка "Перейти" совместно с CSpinEdit1 демонстрирует использование метода ShockwaveFlash1->GotoFrame – переход на произвольно заданный номер фрейма.

Кнопка "Загрузить новый Flash ролик" вызывает диалоговое окно и загружает новый swf файл. (См. поставляемый с примером square.swf)..


Отметим, что в программе используются:



Исходный код программы находится в архиве .

Текст основного модуля из архива

#include < vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------

#pragma package(smart_init)

#pragma link "ShockwaveFlashObjects_OCX"

#pragma link "CSPIN"

#pragma resource "*.dfm"

TForm1 *Form1;

//-------------------------------

__fastcall TForm1::TForm1
(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------

void TForm1::ShowCurFrame(void) //
показать номер текущего фрейма

{

Label2->Caption = IntToStr
(ShockwaveFlash1->CurrentFrame()); // номер текущего фрейма

Label2->Visible = true;

}

//--------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

ShockwaveFlash1->Movie =
ExtractFilePath(Application->ExeName) + "ball.swf";

Label4->Caption = IntToStr
(ShockwaveFlash1->TotalFrames); // Общее число фреймов

}

//--------------------------------

void __fastcall TForm1::
Button2Click(TObject *Sender)

{

ShockwaveFlash1->Stop();

ShowCurFrame();

}

//--------------------------------

void __fastcall TForm1::
Button3Click(TObject *Sender)

{

ShockwaveFlash1->Play();

Label2->Visible = false;

}

//--------------------------------

void __fastcall TForm1::
Button4Click(TObject *Sender)

{

if (ShockwaveFlash1->IsPlaying())

ShockwaveFlash1->Stop();
// если проигрывается, то остановим

ShockwaveFlash1->Back();
// на предыдущий фрейм

ShowCurFrame();

}

//---------------------------------

void __fastcall TForm1::
Button5Click(TObject *Sender)

{

if (ShockwaveFlash1->IsPlaying())



ShockwaveFlash1->Stop();
// если проигрывается, то остановим

ShockwaveFlash1->Forward();
// на следующий фрейм

ShowCurFrame();

}

//--------------------------------

void __fastcall TForm1::
Button6Click(TObject *Sender)

{

if (ShockwaveFlash1->IsPlaying())

ShockwaveFlash1->Stop(); //
если проигрывается, то остановим

ShockwaveFlash1->Rewind(); //
на 1-й фрейм

ShowCurFrame();

}

//--------------------------------

void __fastcall TForm1::
Button7Click(TObject *Sender)

{

ShockwaveFlash1->GotoFrame
(StrToInt(CSpinEdit1->Text)); // на введенный фрейм

ShowCurFrame();

}

//---------------------------------

void __fastcall TForm1::
Button8Click(TObject *Sender)

{

if (OpenDialog1->Execute())

{

if (ShockwaveFlash1->IsPlaying())

ShockwaveFlash1->Stop(); //
если проигрывается, то остановим

ShockwaveFlash1->Movie =
OpenDialog1->FileName;

Label4->Caption = IntToStr
(ShockwaveFlash1->TotalFrames); // Общее число фреймов

ShockwaveFlash1->Play();

Label2->Visible = false;

}

}

//-------------------------------





Самый выгодный курс обмена валюты