5

私は過去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-18718SDK-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)を使用していることに起因しているようです。現在、コンパイラを切り替える方法を検討しています。

4

2 に答える 2

2

本当に面白い質問です。私はいくつかの研究をしました。はい、mxmlc拡張機能を記述して、いくつかのカスタム機能を追加できます。ただし、カスタムメタデータの処理は非常に複雑であり、フレックスコンパイラソースのデバッグと探索には多くの時間が必要です。拡張機能に関する投稿をブログに作成しました。確認できます。

http://tim-davydik.blogspot.com/2012/09/flex-compiler-mxmlc-extensions-forcing.html

于 2012-09-29T12:03:18.127 に答える
0

アクションスクリプトでメタデータタグを機能させる方法

Timofei Davydikは、私の質問に答えるために、 Flexコンパイラmxmlc拡張機能という名前のすばやく簡単なチュートリアルをブログに書いています。コンパイラ言語を強制し、問題が何であるかを追跡するのを助けてくれました(それが私が彼に恩恵を与えている理由です)。彼の投稿では、FlashDevelopではなくFlash Builderを使用しています。これにより、次の質問の答えが得られます。

FlashDevelopを使用してそれらをプログラムする方法

残念ながら、Phillipeが指摘したように、AS3プロジェクトの場合、FlashDevelopはメタデータをサポートしないFlexコンパイラSHell(FCSH)を使用します。FlashDevelopはオープンソースであるため、テスト目的でコンパイラを切り替えようとします(おそらく失敗します)。これに興味のある人にとっては、このフォーラムの投稿は良いスタートだと思います。[ギフト] flashDevelop 4.xで新しいAS3コンパイラ(ASC 2.0)を試してください。

于 2012-10-08T02:55:33.583 に答える