Flash - статьи

         

Команда 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 какую-либо информацию.



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