使用Flex Builder 3将包中的ActionScript类编译为swf

时间:2009-07-11 01:29:04

标签: flex flash actionscript classpath mxmlc

如何在 Flex Builder 3 Pro 中配置 ActionScript项目,以便我可以将属于包的一部分的ActionScript类编译为swf。例如,我想编译为swf的类是:

package utils {
    import flash.display.Sprite;
    public class Tool extends Sprite {
        public function Tool() {

    }
}

采用如下目录结构:

RootASProject
-RootASProject.mxml
-subASProject1
--subSubASProject1a
---IASModule.as
---ASModule.as
--- ASModule.swf
- subSubASProject2
-utils
--ITool.as
--Tool.as
--Tool.fla
--Tool.swf

RootASProject由一个开发人员,subASProject1和subSubASProject1a由另一个开发人员utils.Tool由另一个人生成。此目录结构使每个人可以独立构建模块和其他资源,并快速测试整个产品。同样重要的是要注意这些资源是在运行时加载的。因此,类定义必须完全合格。例如,Tool.swf包含/定义“utils.Tool”而不是“Tool”。

只使用Flash IDE进行开发,这个目录结构不是问题。我们创建了一个Tool.fla并将utils.Tool分配为Document Class,然后在Flash IDE的Publish Setting中,我们将类路径设置为 NOT 当前目录(。),而不是RootASProject目录。 如果它被设置为当前目录,则错误将是:源路径中找到的文件必须具有与定义的包'utils'相同的包结构''。工具工具.as。我们熟悉此错误消息,因此我认识到Flex IDE默认在当前目录中查找子文件夹utils,以匹配打包的类。

在Flex IDE中,我可以将utils parent,RootASProject添加为附加源路径,但我不知道如何阻止flex首先查看当前目录。

使用ant构建文件,我可以设置RootASProject的源路径,mxmlc可以很好地构建utils / Tool.swf。显然,它只使用传递给它的源路径,并且不会自动在当前目录中查找utils。

我知道使用Flash或Ant可以解决问题。 Ant甚至更适合大型和自动构建;但是,在快速调试期间,我真的很高兴能够使用其调试器在Flex IDE中继续执行代码。

2 个答案:

答案 0 :(得分:1)

您的编译错误与其用作文档类无关。您的目录结构需要与您的clas中的包匹配。简单的解决方案是创建一个名为“utils”的文件夹,并将Tool.as移动到该文件夹​​中。

您所称的“文档”类是导出符号的基类。假设您的项目是一个ActionScript项目,并且上面的类被标记为您的应用程序,那么它应该按预期工作。

答案 1 :(得分:0)

如果您使用的是Flex Builder 3或更高版本,只需通过File>创建一个新的ActionScript项目。新> ActionScript Project并将您的ITool.as文件指定为其中的主应用程序文件。