この例では、ActionScript ファイルとして定義されたカスタムフォーマッタコンポーネントを使用します。フォーマッタの名前は MySimpleFormatter で、MySimpleFormatter.as というファイルに定義されているとします。カスタムフォーマットコンポーネントの作成について詳しくは、カスタムフォーマッタを参照してください。
MXML ファイルをコンパイルするプロセスは、ActionScript ファイルの場合と同じです。MXML ファイルのデプロイの例については、シンプルな XML コンポーネントを参照してください。
ActionScript ファイルとして定義されたコンポーネントを配布する場合は、アプリケーションファイルと同じディレクトリ構造内に保存するか、ActionScript ソースパスで指定したディレクトリに保存します。
カスタムコンポーネントの MXML タグ名は、名前空間の接頭辞とタグ名の 2 つの部分で構成されています。名前空間の接頭辞は、カスタムコンポーネントを実装するファイルの検索先を Flex に指示します。タグ名はコンポーネントのファイル名(この場合は、MySimpleFormatter.as)に対応しています。そのため、MySimpleFormatter.as ファイルは、タグ名 <namespace:MySimpleFormatter> を持つコンポーネントを定義します。
メインアプリケーション MXML ファイルは、<mx:Application> タグに含まれるコンポーネントを参照するのに使用する名前空間の接頭辞を定義します。フォーマッタを ActionScript ファイルとしてデプロイする場合、次のいずれかの方法で参照します。
package
{
//Import base Formatter class.
import mx.formatters.Formatter
public class MySimpleFormatter extends Formatter {
...
}
}
次の例のように参照できます。次のコードでは、ローカル名前空間(*)が接頭辞 MyComp にマップされています。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:MyComp="*">
<MyComp:MySimpleFormatter/>
</mx:Application>
ActionScript ソースパスディレクトリとアプリケーションディレクトリの両方に同じファイルが存在する場合、Flex はアプリケーションディレクトリ内のファイルを使用します。
package myComponents.formatters
{
//Import base Formatter class
import mx.formatters.Formatter
public class MySimpleFormatter extends Formatter {
...
}
}
この例では、MySimpleFormatter.as ファイルは、メインアプリケーションディレクトリの myComponents\formatter サブディレクトリにあります。次の例のように、myComponents.formatters 名前空間を、MyComp 接頭辞にマップします。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="myComponents.formatters.*">
<MyComp:MySimpleFormatter/>
</mx:Application>
ActionScript ソースパスサブディレクトリとアプリケーションサブディレクトリの両方に同じ名前を持つ複数のファイルが存在する場合、Flex はアプリケーションサブディレクトリ内のファイルを使用します。
package flexSharedRoot.custom.components
{
//Import base Formatter class.
import mx.formatters.Formatter
public class MySimpleFormatter extends Formatter {
...
}
}
続いて、サブディレクトリを指定する名前空間を使用します。次のコードは、flexSharedRoot\custom\components ディレクトリにあるコンポーネントを宣言しています。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:MyComp="flexSharedRoot.custom.components.*"/>
<MyComp:MySimpleFormatter/>
</mx:Application>
ActionScript ソースパスディレクトリとアプリケーションディレクトリの両方に同じファイルが存在する場合、Flex はアプリケーションファイルディレクトリ内のファイルを使用します。
SWC ファイルを作成するには、flex_install_dir\bin ディレクトリにある compc コンパイラを使用します。compc は、MXML コンポーネントや ActionScript コンポーネントのソースファイルから SWC ファイルを生成するコンパイラです。
この例では、次のパッケージとクラス定義を使用して、定義したカスタムフォーマッタコンポーネントの SWC ファイルを作成します。
package myComponents.formatters
{
//Import base Formatter class.
import mx.formatters.Formatter
public class MySimpleFormatter extends Formatter {
...
}
}
この例では、MySimpleFormatter.as ファイルは c:\flex\myComponentsForSWCs\myComponents\formatters ディレクトリにあります。
flex_install_dir\bin ディレクトリから、次の compc コマンドを使用して、このコンポーネントの SWC ファイルを作成します。
.\compc -source-path c:\flex\myComponentsForSWCs\
-include-classes myComponents.formatters.MySimpleFormatter
-o c:\flex\mainApp\MyFormatterSWC.swc
この例では、compc コンパイラの次のオプションを使用します。
|
オプション名 |
説明 |
|---|---|
|
-source-path |
MySimpleFormatter.as ファイルのベースディレクトリの場所を指定します。コンポーネントの package ステートメントが定義するディレクトリは含みません。 |
|
-include-classes |
SWC ファイルに追加するクラスを指定します。ソースコードのファイル名ではなく、クラス名(MyComponents.formatters.MySimpleFormatter)を指定します。このオプションで指定するすべてのクラスが、source-path コンパイラオプションで指定されたコンパイラのソースパスに存在している必要があります。 パッケージ化されたクラスとパッケージ化されていないクラスの両方を使用できます。名前空間でコンポーネントを使用する場合は、include-namespaces オプションを使用します。 コンポーネントがパッケージ内にある場合は、スラッシュではなくドット(.)表記を使用してパッケージレベルを区切ります。 |
|
-o |
出力 SWC ファイルの名前とディレクトリの場所を指定します。この例では、ディレクトリは、メインアプリケーションのある c:\flex\mainApp です。 |
メインアプリケーションファイルでは、次の例のように、コンポーネントの名前空間を指定します。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="myComponents.formatters.*">
<MyComp:MyFormatter/>
</mx:Application>
SWC ファイルを配布する場合、対応する ActionScript ファイルが、アプリケーションのディレクトリ構造内、または ActionScript ソースパス内に存在しないようにしてください。Flex では、SWC ファイルではなく、ActionScript ファイルが使用される可能性があります。
mxmlc を使用してメインアプリケーションをコンパイルする場合、c:\flex\mainApp ディレクトリがライブラリパスに含まれるようにしてください。mxmlc が SWC ファイルの場所を特定できなくなります。
SWC ファイルについて詳しくは、Flex コンパイラの使用とプロジェクトの構築を参照してください。
compc ツールを使用して RSL を作成し、次にアプリケーションのコンパイル時にライブラリの場所をコンパイラに渡します。例などについて詳しくは、ランタイム共有ライブラリの使用を参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート