Использование методов SetVariable и GetVariable для передачи данных между Flash и CBuider
Демонстрации методов SetVariable и GetVariable приведена в проекте, который находится в файле .
Методы объявлены в SockwaveFlashObjects_OCX.h. следующим образом:
void __fastcall SetVariable(BSTR name/*[in]*/, BSTR
value/*[in]*/);
BSTR __fastcall GetVariable(BSTR name/*[in]*/);
Параметр name определяет полное имя переменной, значение которой устанавливается методом SetVariable или запрашивается методом GetVariable. Для метода SetVariable параметр value содержит устанавливаемое значение. Возврат значения переменной в методе GetVariable производится через имя метода.
Обратите внимание, что все параметры и возвращаемое значение имеет тип BSTR.
Итак, пример использования SetVariable и GetVariable
Во Flash создаем ролик, (см. рис. 9) в котором располагаем статический текст и динамический тексты.
Рис. 9. Flash ролик для демонстрации SetVariable и GetVariable
В динамическом тексте меняем его имя на CBuilderText и имя переменной на BcbText (см. рис. 10)
Рис. 10. Свойства динамического текста
Сохраняем Flash ролик под именем BcbToFlash.fla (и BcbToFlash.swf) и приступаем к созданию проекта на CBuilder (см. рис. 11).
Этот проект будет передавать во Flash ролик текст, который будет отображаться в поле динамического текста (имя этого компонента CBuilderText), меняя переменную под именем BcbText. Изменение будет происходить при нажатии на кнопку "Передать" (вызов метода SetVariable).
С помощью ComboBox1 будем менять цвет бордюра вокруг текста. Изменение будет происходить при любой модификации значения в ComboBox1. (опять же метод SetVariable).
Рис. 11. Форма для демонстрации методов SetVariable и GetVariable
И, наконец, демонстрация метода GetVariable с помощью кнопки "Запросить цвет бордюра из Flash ролика" и метки с именем Label3. При нажатии на кнопку в Label3 отобразится значение кода цвета бордюра.
Обратите внимание, что задавать цвет надо в 16-ричном виде, а возвращается он в десятичном. И, естественно, надо не забывать, что все параметры передаются и возвращаются в переменных типа BSTR. Для преобразования можно использовать функцию StringToOleStr и не забывать указывать L перед текстовыми константами.
Текст модуля для демонстрации методов SetVariable и GetVariable
//------------------------------------
#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)
{
ShockwaveFlash1->Movie =
ExtractFilePath(Application->ExeName) + "BcbToFlash.swf";
Label3->Caption = ShockwaveFlash1->
GetVariable (L"CBuilderText.borderColor");
}
//-------------------------------------
void __fastcall TForm1::
Button1Click(TObject *Sender)
{
ShockwaveFlash1->SetVariable
(L"BcbText", StringToOleStr(Edit1->Text));
}
//--------------------------------------
void __fastcall TForm1::
ComboBox1Change(TObject *Sender)
{
ShockwaveFlash1->SetVariable
(L"CBuilderText.borderColor", StringToOleStr(ComboBox1->Text));
}
//---------------------------------------
void __fastcall TForm1::
Button2Click(TObject *Sender)
{
Label3->Caption = ShockwaveFlash1->
GetVariable (L"CBuilderText.borderColor");
}
//--------------------------------------