Команда fsCommand и событие onFSCommand
Flash-ролик может инициировать событие Delphi, а наоборот - из Delphi во Flash, к сожалению, нет. Команда скрипта fsCommand, написанная во Flash, вызывает событие onFSCommand для объекта типа TSockwaveFlash в Delphi и передаёт два параметра:
- BSTR command - наименование команды;
- BSTR args - параметры.
Значения этих параметров устанавливаются командой fsCommand во Flash и, в нашем случае, эти параметры могут иметь произвольные значения, которые можно использовать для обмена данными.
Приведём простой пример (см. ).
Запустим Macromedia Flash MX и создадим ролик следующим образом.
Поместим в единственный фрейм сцены кнопку "Oval buttons - blue" из общей библиотеки (см. рис. 7).
Рис. 7.Создание кнопки.
Теперь напишем обработчик события Release для этой кнопки, в котором разместим команду fscommand ("Click"). В данном примере передача второго параметра в команде fscommand не используется.
Это показано на .
Выбор текста "Click" в качестве первого параметра в данном случае произволен.
Сохраним ролик под именем botton.fla в том же каталоге, в котором будем размещать создаваемый на Delphi проект. Нажмем Alt+Ctrl+Enter, чтобы получить botton.swf.
Создадим новый проект на Delphi. На форму поместим компонент Flash под именем ShockwaveFlash1. Сделаем программную загрузку файла botton.swf и обработку события onFSCommand, как показано ниже в тексте модуля.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, ShockwaveFlashObjects_TLB;
type TForm1 = class(TForm) ShockwaveFlash1: TShockwaveFlash; procedure ShockwaveFlash1FSCommand(ASender: TObject; const command, args: WideString); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ShockwaveFlash1FSCommand(ASender: TObject; const command, args: WideString); begin if command = 'Click' then if Form1.Color=clWhite then Form1.Color := clBtnFace else Form1.Color := clWhite; end;
procedure TForm1.FormCreate(Sender: TObject); begin ShockwaveFlash1.Movie := ExtractFilePath(Application.ExeName) + 'button.swf'; end;
end.
Если значение переменной x равно "Click", то форма меняет свой цвет.
Параметр arg здесь не используется, но его можно применить, чтобы передать в Delphi какую-либо информацию.