Команда 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.