我是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问题here和here。
谢谢!
更新:我已将构建命令更改为以下内容:
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>
答案 0 :(得分:9)
以下是link to the mxmlc command line tool docs from Adobe和direct 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的帮助。