题
我是Flex SDK的新手,并尝试使用 Doug Mccune的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 。
谢谢!
更新:我已将构建命令更改为以下内容:
mxmlc -library-path+=lib coverflow.mxml
我也尝试了以下内容:
mxmlc -library-path+=CoverFlow_lib.swc coverflow.mxml
将swc文件与mxml文件放在同一目录中。但是,我仍然遇到同样的错误。
此处还有一个视频,显示的是同一个图书馆。我试图使用,但在Flex Builder中。不幸的是,它没有显示如何使用mxmlc。
我也尝试过简单地删除我的mxml,
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*" >
<local:VideoCoverFlow />
</mx:Application>
解决方案
以下是指向mxmlc命令行工具的链接来自Adobe的文档和直接链接命令行选项参考。我也发现mxmlc -help list
是一个好的起点。
正如另一张海报推荐的那样,您确实希望使用library-path
添加包含swc文件的目录的路径。使用+ =运算符确保不覆盖以前的值
e.g。)
c:\flex_sdk_3\bin\mxmlc.exe -library-path+=lib coverflow.mxml
其他提示
如果是swc,你不应该使用库路径而不是源路径并引用swc吗?
我终于完成了我的项目。使用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的帮助。