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

标签 actionscript-3 compiler-construction metadata

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

问题

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

IE。我有以下功能:

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)、unfinished forum post , how to add a custom metadata in FlexBuilder 上的教程 (?) (我正在使用 FlashDevelop),一个 not-so-useful answer in StackOverflow还有更多的死胡同。

帮助

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

我的两个主要问题是:
A) 在 Java 中创建扩展需要什么? (我需要 Flex Builder 吗?Eclipse?我的类路径中需要哪些库?)
B) 一旦我将它编译成某种东西(一个 swc?),我如何在我的 AS3 项目中将它包含在 FlashDevelop 中?

提前致谢!

更新

我已经能够在 Eclipse 中创建一个 Java 项目,添加 Flex 库,实现 IMxmlcExtension 接口(interface)并将项目编译到一个带有正确 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 compiler option

更新 3

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

最佳答案

真的很有趣的问题。我做了一些研究。是的,我们可以编写 mxmlc 扩展并添加一些自定义功能。但是处理自定义元数据确实很复杂,需要大量时间调试和探索 flex 编译器源。我在我的博客中创建了一篇关于扩展的帖子,您可以查看它:

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

关于actionscript-3 - FlashDevelop 教程中的 Flex 元数据编译器扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645106/

相关文章:

表达式评估中的编译器差异

c - Libclang API 获取定义在不同文件中的函数定义

android - 什么是元数据?以及它在android中的用途是什么

android - 在不安装 adobe air 的情况下刷写 android 应用程序

actionscript-3 - 选择网格中中心单元格的公式/算法?

iphone - 闪存 iOS 应用程序

actionscript-3 - AS3 中麦克风输入数据的快速傅里叶变换

compiler-construction - 解释器在解释一种语言时应该如何处理 "work"?

python - 锁定 dask.multiprocessing.get 并将元数据添加到 HDF

join - SSIS 合并连接组件写入 0 行