使用Flex SDK mxmlc解析组件库

时间:2008-10-11 21:19:39

标签: flex mxml

我是Flex SDK的新手,并尝试使用Doug Mccune's CoverFlow小部件实现一个简单的项目。关于如何做到这一点的大部分文档都假设一个人正在使用Adobe的FlexBuilder产品,这是一个250美元的Eclipse插件,我宁愿避免购买。我遇到的问题只是让Doug的swc文件(他的组件库的二进制版本)被mxmlc(Flex SDK项目编译器)识别。我不断收到错误消息,例如

  

错误:无法解析为组件安装

  

错误:未找到类型或不是编译时常量:CoverFlow。

我也尝试过类型“VideoCoverFlow”,因为我很确定这些类型是在Doug的lib中定义的。唉,我一直在搞清楚自己哪里出错了。

以下是我的mxml项目文件的全文,名为coverflow.mxml。

<?xml version="1.0" encoding="utf-8"?>

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:local="*"
    height="100%"
    width="100%"
    layout="absolute">

    <local:CoverFlow
        id="CoverFlow"
        horizontalCenter="0"
        verticalCenter="0"
        borderThickness="10"
        borderColor="#FFFFFF"
        width="100%"/>

</mx:Application>

我正在尝试使用以下命令编译它:

c:\flex_sdk_3\bin\mxmlc.exe -compiler.source-path=lib coverflow.mxml

我还尝试将CoverFlow_lib.swc文件移动到与mxml文件相同的目录中,而不是使用source-path参数,但这似乎没有什么区别。

我很乐意去RTFM,如果有人可以如此友善地指出我正确的文档的方向。有相关的Stack Overflow问题herehere

谢谢!


更新:我已将构建命令更改为以下内容:

mxmlc -library-path+=lib coverflow.mxml

我也尝试了以下内容:

mxmlc -library-path+=CoverFlow_lib.swc coverflow.mxml

将swc文件与mxml文件放在同一目录中。但是,我仍然遇到同样的错误。

还有一个video here显示了我正在尝试使用的相同库,但是在Flex Builder中。不幸的是,它没有显示如何使用mxmlc。

我也尝试过简单地删除我的mxml,

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:local="*" >

    <local:VideoCoverFlow />

</mx:Application>

3 个答案:

答案 0 :(得分:9)

以下是link to the mxmlc command line tool docs from Adobedirect link to the command line options reference.我也认为mxmlc -help list是个好地方。

正如另一张海报所推荐的那样,您确实希望使用library-path添加包含swc文件的目录的路径。使用+ =运算符确保不覆盖以前的值

e.g。)

c:\flex_sdk_3\bin\mxmlc.exe -library-path+=lib coverflow.mxml

答案 1 :(得分:1)

如果是swc,你不应该使用库路径而不是源路径并引用swc吗?

答案 2 :(得分:0)

我终于完成了我的项目。使用library-path是解决方案的一部分,但我还必须仔细查看Doug Mccune库的源代码,以便在mxml中使用正确的路径信息和类型名称。

获胜命令行是

mxmlc -library-path+=lib coverflow.mxml

工作的mxml是

<?xml version="1.0" encoding="utf-8"?>

<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:coverflow="com.dougmccune.coverflow.*"
    xmlns:containers="com.dougmccune.containers.*"
    xmlns:local="*" >

    <containers:CoverFlowContainer id="flow" />

</mx:Application

出于某种原因,如果我使用id="coverflow",我的容器会抱怨。我得到一个错误,说不允许id名称和类型名称相同。如果有人能向我解释,我很想知道那里发生了什么。

再次感谢Simon和James的帮助。