FlashDevelop中的Flex元数据编译器扩展教程

pek*_*pek 5 compiler-construction metadata actionscript-3

我一直在谷歌搜索过去2个小时,寻找一些关于如何在as3中添加我自己的自定义元数据标签的简单说明,但没有成功.我开始认为我可能不会搜索正确的术语.

问题

最后,我想要做的是在函数上添加自定义元数据,该函数将函数作为参数并确保给定函数具有正确的参数.

即我有以下功能:

public function testCallback(callback:Function):void
{
    callback("test");
}
Run Code Online (Sandbox Code Playgroud)

当我这样调用它时,我想得到编译器错误:

public function doNothing():void
{
    // doing nothing
}

public function someRandomFunction():void
    // ...
    testCallback(doNothing);
}
Run Code Online (Sandbox Code Playgroud)

我想这样做的方法是通过这个元数据:

[Callback(paramName="callback",callbackParams="string")]
public function testCallback(callback:Function):void
{
    callback("test");
}
Run Code Online (Sandbox Code Playgroud)

扩展将在编译期间运行,如果传递的函数不包含正确的参数,则将抛出编译时错误.我认为使用flex2.compiler.util.ThreadLocalToolkit.logError(path,line,errorMessage); 我能做到这一点.

搜索

我一直在谷歌搜索几个小时,找不到一个可以让我开始的简单教程.我发现了一些SDK错误报告(SDK-18718,SDK-26041),未完成的论坛帖子,关于如何在FlexBuilder中添加自定义元数据的教程(?)(我正在使用FlashDevelop),这是一个不太有用的答案在StackOverflow和许多死胡同.

帮助

到目前为止,据我所知,我将使用Java来创建扩展,然后,使用编译器命令,我将它添加到我的项目中.但是,我不知道开始需要什么.

我的两个主要问题是:
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的论坛中开始了一个主题.如果您感兴趣,该线程是: - 扩展编译器选项

更新3

Pilippe是正确的,似乎问题来自FlashDevelop使用Flex Compiler SHell(fcsh)的事实.我现在正在研究如何切换编译器.

pek*_*pek 0

如何使元数据标签在 Action Script 中工作

Timofei Davydik在他的博客中写了一个快速简单的教程来回答我的问题,名为Flex 编译器 mxmlc 扩展。强制编译器语言,并帮助我找出问题所在(这就是我给他赏金的原因)。在他的帖子中,他使用的是 Flash Builder 而不是 FlashDevelop,这给我们带来了下一个问题的答案:

如何使用 Flash Develop 对它们进行编程

不幸的是,正如Phillipe指出的那样,对于 AS3 项目,FlashDevelop 使用 Flex Compiler SHell (FCSH),它不支持元数据。由于 FlashDevelop 是开源的,因此我将尝试(可能会失败)切换编译器以进行测试。对于对此感兴趣的其他人,我认为这个论坛帖子是一个很好的开始:[ GIFT ] Try new AS3 compiler (ASC 2.0) in flashDevelop 4.x