如何在构建swf时指定swc?

时间:2010-07-07 15:18:53

标签: flex air mxml

我在Flex中实现了一些我希望在多个AIR项目中使用的实用程序类。我创建了一个包含这些类的swc。我正在使用Linux机器而没有FlashBuilder。所以我使用的是compc和mxmlc命令行SDK工具。我的问题是,在构建独立项目时,我无法找到指定swc的方法。教程提出了以下命令: mxmlc -load-config /opt/flex/4.1.0/frameworks/air-config.xml -library-path=/path/to/utility.swc hello.mxml。但是,使用它会给我错误hello.mxml: Error: Unable to locate specified base class 'mx.core.WindowedApplication' for component class 'hello'。如果我将所有代码从swc移动到单个整体项目,一切正常。有人可以帮我从这里出去吗?独立项目的代码是:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" windowComplete="completeHandler();">
<mx:Script>
<![CDATA[
import com.example.Ext;
private function completeHandler():void
{
    var e: Ext = new Ext();
    e.hi();
}
]]>
</mx:Script>
<mx:Label text="Hello World" />
</mx:WindowedApplication>

类型Ext包含在utility.swc中。

更新: 我修复了上一个错误。命令行应该是mxmlc -load-config /opt/flex/4.1.0/frameworks/air-config.xml -library-path+=/path/to/utility.swc hello.mxml。这会将我的swc附加到现有库路径而不是替换它。但是,我有一个新问题。现在错误是hello.mxml(10): Error: Type was not found or was not a compile-time constant: Ext.我也粘贴了utility.swc的代码:

package com.example {
    public class Ext {
        public function Ext {
            // do something
        }   
        public function foo( ): void {
            return;
        }   
    }   
}

1 个答案:

答案 0 :(得分:1)

使用-library-path+=/path/to/my.swc。如果使用=而不是+=,编译器将丢弃路径中已有的所有平台库。