ネイティブ拡張では、複数のプラットフォームをターゲットにすることが多くあります。例えば、1 つの拡張が、iOS を実行しているデバイスと Android を実行しているデバイスをターゲットとする場合があります。この場合、ネイティブコード言語を含む、ActionScript クラス実装およびネイティブコード実装はターゲットプラットフォームに基づいて変更できます。
ベストプラクティスとしては、ActionScript 拡張クラスで、実装にかかわらず同じ ActionScript パブリックインターフェイスを提供します。常に同じパブリックインターフェイスを使用することで、真のクロスプラットフォームネイティブ拡張となります。ActionScript パブリックインターフェイスが同じで、ActionScript 実装が異なる場合は、プラットフォームごとに別々の ActionScript ライブラリを作成します。
一部のターゲットプラットフォームに対して、ネイティブコード実装を含まない拡張を作成することもできます。このような拡張は、次のような場合に便利です。
-
一部のターゲットプラットフォームのみが、目的の機能のネイティブ実装をサポートしている場合。
拡張はこれらのプラットフォームのみでネイティブ実装を使用できますが、他のプラットフォーム上では ActionScript 専用の実装を使用します。例えば、コンピュータープロセス間通信のための特殊なメカニズムを提供するプラットフォームがあるとします。このプラットフォーム用の拡張にはネイティブ実装を用意します。他のプラットフォーム用の同じ拡張は、ActionScript Socket クラスを使用した ActionScript 専用の拡張とします。
アプリケーション開発者が拡張を使用するときには、異なるターゲットプラットフォーム上で拡張がどのように実装されているのかを知らなくても、1 つのアプリケーションを記述できます。
-
拡張をテストする場合。
モバイルデバイスの特定の機能を使用するネイティブ拡張があるとします。この場合、デスクトップ向けの ActionScript 専用の拡張を作成できます。次に、アプリケーション開発者は、実際のターゲットデバイスでテストする前に、開発中にシミュレーションテストを行うためにデスクトップ拡張を使用できます。同様に、拡張の開発者は、ネイティブコード実装と連携する前に、ActionScript 側の拡張をテストできます。
拡張をパブリッシュするときに、拡張記述ファイル内の
<platform>
エレメントでターゲットプラットフォームを指定できます。個々の
<platform>
エレメントには、ターゲットの名前を指定します(例:
iPhone-ARM
、
Windows-x86
)。また、
default
という名前の
<platform>
エレメントを指定することもできます。
default
プラットフォームには、
<platform>
エレメントで指定されていないすべてのプラットフォームで使用する ActionScript 専用の実装があります。詳しくは、
ネイティブ拡張記述ファイル
を参照してください。
注意:
少なくとも 1 つのターゲットプラットフォームの実装に、ネイティブコードが含まれている必要があります。ネイティブコードを必要とするターゲットプラットフォームがない場合は、ネイティブ拡張の使用は、適切な方法ではありません。その場合は SWC ライブラリを作成します。