Flash - статьи

Команда fsCommand и событие onFSCommand


Flash ролик может инициировать событие CBuilder, а наоборот –CBuilder во Flash, к сожалению, нет. Команда скрипта fsCommand, написанная во Flash, вызывает событие onFSCommand для объекта типа TSockwaveFlash в CBuilder и передаёт два параметра:

  • BSTR command – наименование команды;

  • BSTR args – параметры.

Значение этих параметров устанавливается командой fsCommand во Flash и, в нашем случае, могут иметь произвольные значения, которые можно использовать для обмена данными.

Приведём простой пример (см. ).

Запустим macromedia Flash и создадим ролик следующим образом.

Поместим в единственный фрейм сцены кнопку "Oval bottons - blue" из общей библиотеки (см. рис. 7).

Рис. 7. Создание кнопки.

Теперь напишем обработчик события Release для этой кнопки в котором разместим команду fscommand ("Click"). В данном примере передача второй параметр в команде fscommand не используется.

Это показано на рис. 8.

Рис. 8. Обработчик события нажатия кнопки.



Выбор текста "Click" в качестве первого параметра данном случае произволен.

Сохраним ролик под именем botton.fla в том же каталоге, в котором будем размещать создаваемый на CBuilder проект. Нажмем Alt+Ctrl+Enter, чтобы получить botton.swf.

Создадим новый проект на CBuilder. На форму поместим компонент Flash под именем ShockwaveFlash1. Сделаем программную загрузку файла botton.swf и обработку события onFSCommand как показано ниже в тексте модуля.

#include < vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma link "ShockwaveFlashObjects_OCX"

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1
(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::Shockwave
Flash1FSCommand(TObject *Sender,

BSTR command, BSTR args)

{

AnsiString x(command); //
преобразование BSTR AnsiString

if (x == "Click")

Form1->Color = Form1->Color==
clWhite?clBtnFace:clWhite;

}

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

void __fastcall TForm1::
FormCreate(TObject *Sender)

{

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

}

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

Обратите внимание, что перед использованием параметр command типа BSTR преобразуются в тип AnsiString (переменная x). Если значение переменной x равно "Click", то форма меняет свой цвет.

Параметр arg здесь не используется, но его можно применить, чтобы передать в CBuilder какую-либо информацию. Для нормальной работы не забудьте преобразовать его в AnsiString , так, как мы сделали это с переменной command.



Содержание раздела