Resolución de libs de componentes con Flex SDK mxmlc
(3)
Soy nuevo en Flex SDK e intento implementar un proyecto simple usando el widget CoverFlow de Doug Mccune . La mayoría de la documentación sobre cómo hacerlo supone que uno está utilizando el producto FlexBuilder de Adobe, que es un complemento Eclipse de $ 250 que prefiero evitar comprar. El problema que estoy teniendo es simplemente obtener el archivo swc de Doug, que es la versión binaria de su lib componente, para ser reconocido por mxmlc, el compilador del proyecto Flex SDK. Sigo recibiendo mensajes de error como
Error: no se pudo resolver la instalación de un componente
y
Error: No se encontró el tipo o no era una constante en tiempo de compilación: CoverFlow.
También probé el tipo "VideoCoverFlow" ya que estoy bastante seguro de que estos tipos están definidos en la lib de Doug. Por desgracia, estoy atascado en averiguar dónde me he equivocado.
El siguiente es el texto completo de mi archivo de proyecto mxml, llamado 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>
Estoy tratando de compilarlo con el siguiente comando:
c:/flex_sdk_3/bin/mxmlc.exe -compiler.source-path=lib coverflow.mxml
También traté de mover el archivo CoverFlow_lib.swc al mismo directorio que el archivo mxml en lugar de usar el argumento source-path, pero eso no parece marcar la diferencia.
Me encantaría ir RTFM si alguien pudiera ser tan amable de señalarme en la dirección de los documentos adecuados. Hay preguntas relacionadas con el desbordamiento de pila aquí y aquí .
¡Gracias!
Actualización : he cambiado mi comando de compilación a lo siguiente:
mxmlc -library-path+=lib coverflow.mxml
Y también probé lo siguiente:
mxmlc -library-path+=CoverFlow_lib.swc coverflow.mxml
Con el archivo swc en el mismo directorio que el archivo mxml. Sin embargo, sigo teniendo los mismos errores.
También hay un video aquí que muestra la misma biblioteca que estoy tratando de usar, pero en Flex Builder. Desafortunadamente, no muestra cómo usar mxmlc.
También intenté quitar mi mxml a simplemente,
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*" >
<local:VideoCoverFlow />
</mx:Application>
Aquí hay un enlace a los documentos de la herramienta de línea de comandos mxmlc de Adobe y un enlace directo a la referencia de opciones de la línea de comando. También encuentro que mxmlc -help list
es un buen lugar para comenzar.
Como se recomienda otro póster, realmente desea usar library-path
para agregar la ruta al directorio que contiene el archivo swc. Use el operador + = para asegurarse de no sobrescribir los valores anteriores
p.ej)
c:/flex_sdk_3/bin/mxmlc.exe -library-path+=lib coverflow.mxml
Finalmente conseguí mi proyecto para construir. El uso de library-path fue parte de la solución, pero también tuve que echar un vistazo más de cerca a las fuentes de la biblioteca de Doug Mccune para poder usar la información de ruta correcta y los nombres de tipo en mi mxml.
La línea de comando ganadora es
mxmlc -library-path+=lib coverflow.mxml
Y el mxml de trabajo es
<?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
Por alguna razón, mi contenedor se queja si uso id="coverflow"
. Me aparece un error que dice que el nombre de identificación y el nombre de tipo no están permitidos. Si alguien puede explicarme eso, me encantaría saber qué está pasando allí.
Gracias de nuevo por la ayuda, Simon y James.
Si se trata de un swc, ¿no deberías estar usando library-path en lugar de source-path y haciendo referencia al swc?