Разрешение компонентов библиотеки с помощью Flex SDK mxmlc - PullRequest
6 голосов
/ 12 октября 2008

Я новичок в Flex SDK и пытаюсь реализовать простой проект с использованием виджета Doug Mccune's CoverFlow . Большая часть документации о том, как это сделать, предполагает, что кто-то использует продукт Adobe FlexBuilder, который представляет собой плагин Eclipse за 250 долларов, который я бы предпочел не покупать. Проблема, с которой я столкнулся, заключается в простом получении файла SWC Дуга, представляющего собой двоичную версию его компонента lib, для распознавания mxmlc, компилятором проекта Flex SDK. Я продолжаю получать сообщения об ошибках, такие как

Ошибка: не удалось разрешить установку компонента

и

Ошибка: тип не найден или не является константой времени компиляции: CoverFlow.

Я также попробовал тип "VideoCoverFlow", так как я почти уверен, что эти типы определены в библиотеке Дуга. Увы, я застрял в выяснении, где я ошибся.

Ниже приводится полный текст файла моего проекта 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, если бы кто-то был так любезен, чтобы указать мне направление на правильные документы. Есть связанные вопросы переполнения стека здесь и здесь .

Спасибо!


Обновление : я изменил мою команду сборки на следующую:

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>

Ответы [ 3 ]

9 голосов
/ 12 октября 2008

Вот ссылка на документацию по инструментам командной строки mxmlc от Adobe и прямая ссылка на ссылку параметров командной строки. Я также считаю mxmlc -help list хорошим местом для начала.

Как рекомендовал другой автор, вы действительно хотите использовать library-path, чтобы добавить путь к каталогу, содержащему файл swc. Используйте оператор + =, чтобы убедиться, что вы не перезаписываете предыдущие значения

например.)

c:\flex_sdk_3\bin\mxmlc.exe -library-path+=lib coverflow.mxml
1 голос
/ 12 октября 2008

Если это SWC, разве вы не должны использовать путь к библиотеке, а не исходный путь и ссылаться на SWC?

0 голосов
/ 12 октября 2008

Я наконец получил свой проект для сборки. Использование пути к библиотеке было частью решения, но мне также пришлось более внимательно посмотреть на источники библиотеки Дуга Маккуна, чтобы я мог использовать правильную информацию о пути и имена типов в моем 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". Я получаю сообщение об ошибке, в котором говорится, что имя идентификатора и имя типа не могут быть одинаковыми. Если кто-нибудь сможет мне это объяснить, я бы хотел понять, что там происходит.

Еще раз спасибо за помощь, Саймон и Джеймс.

...