私は過去2時間、自分のカスタムメタデータタグをas3に追加する方法についての簡単な手順を探していましたが、成功しませんでした。私はおそらく正しい用語を検索していないと思い始めています。
問題
最終的に、私がやりたいのは、関数をパラメーターとして受け取る関数にカスタムメタデータを追加し、指定された関数が正しいパラメーターを持っていることを確認することです。
つまり、私は次の機能を持っています:
public function testCallback(callback:Function):void
{
callback("test");
}
次のように呼び出すと、コンパイラエラーが発生します。
public function doNothing():void
{
// doing nothing
}
public function someRandomFunction():void
// ...
testCallback(doNothing);
}
私がこれを行うことを考えている方法は、このメタデータを持つことです。
[Callback(paramName="callback",callbackParams="string")]
public function testCallback(callback:Function):void
{
callback("test");
}
拡張機能はコンパイル中に実行され、渡された関数に正しいパラメーターが含まれていない場合、コンパイル時エラーがスローされます。flex2.compiler.util.ThreadLocalToolkit.logError(path、line、errorMessage);を使用して考えます。私はこれを達成することができます。
検索
私はここ数時間グーグルをしていて、私を始めることができる簡単なチュートリアルを見つけることができませんでした。いくつかのSDKバグレポート(SDK-18718、SDK-26041)、未完成のフォーラム投稿、 FlexBuilderでカスタムメタデータを追加する方法に関するチュートリアル(?)(FlashDevelopを使用しています)、あまり役に立たない回答を見つけましたStackOverflowやその他多くの行き止まりにあります。
手伝い
これまでのところ、私が理解できる限り、Javaを使用して拡張機能を作成し、次にコンパイラコマンドを使用してそれをプロジェクトに追加します。しかし、何を始める必要があるのかわかりません。
私の2つの主な質問は次のとおりです
。A)Javaで拡張機能を作成するには何が必要ですか?(Flex Builderが必要ですか?Eclipse?クラスパスに必要なライブラリは何ですか?)
B)これを何か(swc?)にコンパイルしたら、AS3プロジェクトのFlashDevelopにこれを含めるにはどうすればよいですか?
前もって感謝します!
アップデート
EclipseでJavaプロジェクトを作成し、Flexライブラリを追加し、IMxmlcExtensionインターフェイスを実装し、プロジェクトを正しいMANIFESTファイルを使用してjarにコンパイルすることができました。残念ながら、FlashDevelopに-extension = MyTest.jarを追加しても、何も起こりませんでした。
便利な場合、コンパイラの結果のコマンドラインは次のようになります。
mxmlc -load-config + = obj \ MyProject.xml -debug = true -incremental = true -swf-version = 10 -extension = flex_test.jar -o obj \ MyProject634846490611881374
アップデート2
Timofei Davydikは、私が問題を絞り込むのを手伝ってくれました。FlashDevelopが主な問題のようです。拡張機能の作成とコマンドラインでのコンパイルは機能します。FlashDeveloperのフォーラムでスレッドを開始しました。興味がある場合は、スレッドは次のとおりです。-extensionコンパイラオプション
アップデート3
Pilippeは正しいですが、問題はFlashDevelopがFlexコンパイラSHell(fcsh)を使用していることに起因しているようです。現在、コンパイラを切り替える方法を検討しています。