Flash - статьи

         

Использование методов 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");

}

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


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