Formát XML externího rozhraní API

Komunikace mezi jazykem ActionScript a aplikací hostující ovládání Shockwave Flash ActiveX používá specifický formát XML pro kódování volání a hodnot funkce. Externí rozhraní API používá dvě části formátu XML. Jeden formát je používán pro reprezentování volání funkce. Další formát se používá pro reprezentaci jednotlivých hodnot; tento formát se používá pro parametry ve funkcích i ve vrácení hodnot funkcí. Formát XML pro volání funkce je použit pro volání z a do jazyka ActionScript. Pro volání funkce z jazyka ActionScript, předá přehrávač Flash Player XML do kontejneru; pro volání z kontejneru přehrávač Flash Player očekává, že aplikace kontejneru předá řetězec XML v tomto formátu. Následující úryvek XML ukazuje příklad volání funkce formátovaného jako XML:

<invoke name="functionName" returntype="xml"> 
    <arguments> 
        ... (individual argument values) 
    </arguments> 
</invoke>

Kořenovým uzlem je uzel invoke. Má dva atributy: atribut name určuje název funkce, která bude volána a atribut returntype je vždy xml. Jestliže volání této funkce zahrnuje parametry, uzel invokemá podřazený uzel arguments, jehož podřazenými uzly budou hodnoty parametru formátované pomocí jednotlivého formátu hodnoty, který je vysvětlen níže.

Jednotlivé hodnoty, včetně parametrů funkce a vrácení hodnot funkce, používají schéma formátování, které vedle vlastních hodnot zahrnuje informaci datového typu. Následující tabulka uvádí třídy jazyka ActionScript a formát XML použitý pro kódování hodnot daného datového typu:

Třída ActionScript/hodnota

Třída C#/hodnota

Formát

Poznámky

null

null

<null/>

 

Boolean true

bool true

<true/>

 

Boolean false

bool false

<false/>

 

String

string

<string>hodnota řetězce</string>

 

Number, int, uint

single, double, int, uint

<number>27.5</number> 
<number>-12</number>
 

Array (elementy mohou být smíšeného typu)

Kolekce, která povoluje elementy se smíšeným typem, například ArrayList nebo object[]

<array> 
    <property id="0"> 
        <number>27.5</number> 
    </property> 
    <property id="1"> 
        <string>Hello there!</string> 
    </property> 
    ... 
</array>

Uzel property definuje jednotlivé elementy a atribut id je numerický, z nuly vycházející index.

Object

Slovník s klíči řetězce a hodnotami objektů, například HashTable s klíči řetězce

<object> 
    <property id="name"> 
        <string>John Doe</string> 
    </property> 
    <property id="age"> 
        <string>33</string> 
    </property> 
    ... 
</object>

Uzel property definuje jednotlivé vlastnosti a atribut id je název vlastnosti (řetězec).

Další vestavěné nebo vlastní třídy

 
<null/> or  
<object></object>

Jazyk ActionScript kóduje jiné objekty jako nulové nebo prázdné objekty. V obou případech jsou jakékoliv hodnoty vlastnosti ztraceny.

Poznámka: S využitím příkladu ukazuje tato tabulka vedle tříd jazyka ActionScript ekvivalentní třídy C#; externí rozhraní API lze nicméně použít pro komunikaci s libovolným programovacím jazykem nebo dobou běhu, která podporuje ovládání ActiveX a není omezena na aplikace C#.

Při vytváření svých vlastních aplikací pomocí externího rozhraní API s aplikací kontejneru ActiveX vám pravděpodobně připadne výhodné zaspat proxy, který provede úlohu převedení volání nativní funkce do serializovaného formátu XML. Příklad třídy proxy zapsané v C# naleznete v částiUvnitř třídy ExternalInterfaceProxy.