如何在FlashDevelop中编译actionscript worker swf
How to compile actionscript worker swf in FlashDevelop
我已经知道actionscript worker 的编码部分了。最近我将 IDE 切换到 FlashDevelop。我不知道如何在 FlashDevelop 中编译 actionscript worker swf。
我尝试使用工具-Flash工具-构建当前文件。但它抛出错误说
Error: Type was not found or was not a compile-time constant: File.
可能是因为我的项目是 AIR 项目,我在我的 worker 中使用 AIR API。
我还尝试通过命令行使用 amxmlc
编译 worker swf。它编译成功。但是 AIR Debug Launcher 在执行 worker swf 部分时崩溃。我手动编译的 swf 几乎是 Flash Builder 为我生成的前一个的一半大小。估计是自己编译了release version swf让ADL无法调试然后死机了
那么如何在 FlashDevelop 中编译一个 worker swf 来调试或发布项目?
更新:
我发现菜单中的"Build current file" 命令是FlashDevelop 中称为快速构建的功能。默认情况下,它将不带参数地将当前文件输出编译到项目根目录。我们可以使用 @mxmlc
ASDoc 标记添加编译器参数(有关详细信息,请参阅下面的链接)以使其为我们编译一个 worker swf。但是目前在FD 5.0.1 中似乎是@mxmlc +configname=air
不编译air swfs 的错误。我找到了使用 @mxmlc -noplay -library-path=[Flex_SDK]\frameworks\libs\air\airglobal.swc -library-path=[Flex_SDK]\frameworks\libs\air\airframework.swc
的解决方法,但路径不能用引号括起来,否则 FD 将显示错误。我可能会查看源代码并尝试修复它。
链接:
编译 worker 与编译任何 swf 没有什么不同,您将需要一个单独的项目来编译 worker,除非您的主要 worker 将自己加载为 worker。
由于FlashDevelop不管理项目之间的依赖关系,你将不得不手动编译它,然后是主要工作人员。
您可以使用 make 或 FlashDevelop 之外的任何构建系统自动执行它,或者使用 Pre/Post 构建命令行
顺便说一句,amxmlc 只是 'mxmlc +configname=air' 的快捷方式,-debug=true 将编译调试版本
我可以向你保证 File 可以在 worker 中使用,基本上它只是一些 actionscript 字节码加载一些其他 actionscript 字节码并将它 运行 放在一个单独的线程中,所以任何 swf 都可以用作worker,除非它不使用 flash.system.Worker class,否则它将无法与其他 worker 通信,或自行停止。
总而言之,限制和问题在于线程之间的通信和同步。例如,只能通过 AMF3 序列化复制复杂对象,仅传递基本 types/objects 作为参数将无法与非主要工作人员
的显示列表进行交互
不要忘记更新 FlashDevelop /AIR SDK 以获得最佳工人支持
我已经知道actionscript worker 的编码部分了。最近我将 IDE 切换到 FlashDevelop。我不知道如何在 FlashDevelop 中编译 actionscript worker swf。
我尝试使用工具-Flash工具-构建当前文件。但它抛出错误说
Error: Type was not found or was not a compile-time constant: File.
可能是因为我的项目是 AIR 项目,我在我的 worker 中使用 AIR API。
我还尝试通过命令行使用 amxmlc
编译 worker swf。它编译成功。但是 AIR Debug Launcher 在执行 worker swf 部分时崩溃。我手动编译的 swf 几乎是 Flash Builder 为我生成的前一个的一半大小。估计是自己编译了release version swf让ADL无法调试然后死机了
那么如何在 FlashDevelop 中编译一个 worker swf 来调试或发布项目?
更新:
我发现菜单中的"Build current file" 命令是FlashDevelop 中称为快速构建的功能。默认情况下,它将不带参数地将当前文件输出编译到项目根目录。我们可以使用 @mxmlc
ASDoc 标记添加编译器参数(有关详细信息,请参阅下面的链接)以使其为我们编译一个 worker swf。但是目前在FD 5.0.1 中似乎是@mxmlc +configname=air
不编译air swfs 的错误。我找到了使用 @mxmlc -noplay -library-path=[Flex_SDK]\frameworks\libs\air\airglobal.swc -library-path=[Flex_SDK]\frameworks\libs\air\airframework.swc
的解决方法,但路径不能用引号括起来,否则 FD 将显示错误。我可能会查看源代码并尝试修复它。
链接:
编译 worker 与编译任何 swf 没有什么不同,您将需要一个单独的项目来编译 worker,除非您的主要 worker 将自己加载为 worker。
由于FlashDevelop不管理项目之间的依赖关系,你将不得不手动编译它,然后是主要工作人员。 您可以使用 make 或 FlashDevelop 之外的任何构建系统自动执行它,或者使用 Pre/Post 构建命令行
顺便说一句,amxmlc 只是 'mxmlc +configname=air' 的快捷方式,-debug=true 将编译调试版本
我可以向你保证 File 可以在 worker 中使用,基本上它只是一些 actionscript 字节码加载一些其他 actionscript 字节码并将它 运行 放在一个单独的线程中,所以任何 swf 都可以用作worker,除非它不使用 flash.system.Worker class,否则它将无法与其他 worker 通信,或自行停止。 总而言之,限制和问题在于线程之间的通信和同步。例如,只能通过 AMF3 序列化复制复杂对象,仅传递基本 types/objects 作为参数将无法与非主要工作人员
的显示列表进行交互不要忘记更新 FlashDevelop /AIR SDK 以获得最佳工人支持