IFlashBox.CallFunction

Синтаксис Fore

CallFunction(Request: String): String;

Синтаксис Fore.NET

CallFunction(Request: String): String;

Параметры

Request. XML-строка, с помощью которой указана выполняемая функция и ее параметры.

Описание

Метод CallFunction выполняет функцию, реализованную в загруженном флэш-объекте, и возвращает результат ее выполнения.

Комментарии

Взаимодействие флеш-объектов с контейнерами, в которых они отображаются, в ActionScript осуществляется через специальный класс - ExternalInterface. Для вызова какой-либо функции, реализованной в ActionScript-коде, данная функция должна быть зарегистрирована в классе ExternalInterface. Регистрации осуществляется с помощью метода ExternalInterface.addCallback.

Для вызова ActionScript-кода с помощью метода CallFunction в качестве параметра Request необходимо указать XML-строку, содержащую наименование функции и значения ее параметров, сериализованные в специальном формате. В общем виде формат XML-строки выглядит следующим образом:

<invoke name="functionName" returntype="xml">

    <arguments>

        //Отдельные значения параметров

    </arguments>

</invoke>

Корневая вершина «Invoke» содержит два атрибута: name - наименование функции, под которым она зарегистрирована с помощью метода ExternalInterface.addCallback; returntype - возвращаемый методом CallFunction тип значения. В качестве значения атрибута всегда указывается "xml".

Отдельные значения параметров указываются в специальном формате, содержащем информацию о типе данных в дополнении с фактическим значением:

ActionScript класс/значение Формат Комментарии
null <null/>  
Логическое True <true/>  
Логическое False <false/>  
String <string>Значение</string>  
Number, int, uint <number>Значение</number>  
Array (элементы могут быть различных типов)

<array>

    <property id="0">

        <number>Значение</number>

    </property>

    <property id="1">

        <string>Значение</string>

    </property>

    ...

</array>

Вершина «property» определяет отдельный элемент массива, а атрибут «id» определяет индекс элемента. Индекс указывается начиная с нуля.
Object

<object>

    <property id="Property1">

        <string>Значение</ String>

    </property>

    <property id="Property2">

        <string>Значение</String>

    </property>

    ...

</object>

Вершина «property» определяет отдельные свойства объекта, а атрибут «id» определяет наименование этих свойств.
Другие встроенные или пользовательские классы

<null/> или

<object> </object>

ActionScript кодирует другие объекты как значение null, либо как пустые объекты. В любом случае какие-либо значения свойств будут потеряны.

Результатом работы метода CallFunction будет XML-строка, содержащая результат выполнения указанной функции флеш-объекта. Данная строка также будет содержать информацию о типе данных в дополнении с фактическим значением.

Пример Fore

Для выполнения примера предполагается наличие формы, расположенного на ней компонента FlashBox с наименованием «FlashBox1» и двух кнопок с наименованиями «Button1» и «Button2». В «FlashBox1» загружен swf-файл, содержащий в своей реализации следующий код:

//...

function Run(): void

{

//...Код функции на ActionScript;

}

function TestFunc(i1,i2: int): Number

{

var i3: Number = i1 * i2 / (i1 + i2);

return i3;

}

ExternalInterface.addCallback("TestRun", Run); //В контейнерах для флеш-объекта функция будет доступна с наименованием TestRun

ExternalInterface.addCallback("TestFunc", TestFunc); //В контейнерах для флеш-объекта функция будет доступна с наименованием TestFunc

//...

Для запуска указанных функций во время выполнения формы реализуем две процедуры для обработки события OnClick кнопок:

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        Request: String;
    Begin
        Request := ("<invoke name=""TestRun"" returntype=""xml""/>");
        FlashBox1.CallFunction(Request);
    End Sub Button1OnClick;

    Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        Request, Result: String;
    Begin
        Request := "<invoke name=""TestFunc"" returntype=""xml"">" +
                    "<arguments>" +
                        "<number>2</number>" +
                        "<number>6</number>" +
                    "</arguments>" +
                "</invoke>";
        Result := FlashBox1.CallFunction(Request);
    End Sub Button2OnClick;

При нажатии на первую кнопку будет выполнена функция «Run» флеш-объекта. Данная функция не содержит параметров, поэтому вершина «arguments» в передаваемой XML-строке не указана.

При нажатии на вторую кнопку будет выполнена функция «TestFunc» флеш-объекта. В качестве значений параметров для данной функции будут указаны значения «2» и «6». Результатом выполнения данной функции будет значение «1,5». Метод CallFunction вернет данное значение, представленное в виде XML-строки: <number>1.5</number>.

Пример Fore.NET

Для выполнения примера предполагается наличие .NET-формы, расположенного на ней компонента FlashBoxNet с наименованием «FlashBoxNet1» и двух кнопок с наименованиями «Button1» и «Button2». В «FlashBoxNet1» загружен swf-файл, содержащий в своей реализации код, указанный в примере Fore выше.

Для запуска функций флеш-объекта во время выполнения формы реализуем две процедуры для обработки события Click кнопок:

    Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
    Var
        Request: String;
    Begin
        Request := ("<invoke name=""TestRun"" returntype=""xml""/>");
        FlashBoxNet1.CallFunction(Request);
    End Sub;
    
    Private Sub button2_Click(sender: System.Object; e: System.EventArgs);
    Var
        Request, Result: String;
    Begin
        Request := "<invoke name=""TestFunc"" returntype=""xml"">" +
                    "<arguments>" +
                        "<number>2</number>" +
                        "<number>6</number>" +
                    "</arguments>" +
                "</invoke>";
        Result := FlashBoxNet1.CallFunction(Request);
    End Sub;

При нажатии на первую кнопку будет выполнена функция «Run» флеш-объекта. Данная функция не содержит параметров, поэтому вершина «arguments» в передаваемой XML-строке не указана.

При нажатии на вторую кнопку будет выполнена функция «TestFunc» флеш-объекта. В качестве значений параметров для данной функции будут указаны значения «2» и «6». Результатом выполнения данной функции будет значение «1,5». Метод CallFunction вернет данное значение, представленное в виде XML-строки: <number>1.5</number>.

См. также:

IFlashBox