alors petit update apres confirmation des Adobe engineer (si si :p)
si vous déclarez une function au niveau du package comme ca
----
package something.to.test
{
public function hello():void
{
trace( "hello world" );
}
}
----
votre SWC ne marchera pas dans Flash CS3, point ligne
but de Flash CS3
mais il y a un workaround :p
si vous déclarez la function comme ca:
----
package something.to.test
{
public var hello:Function = function():void
{
trace( "hello world" );
}
}
----
là ca passe
le seul problem c'est de déclarer direct une function (public var
function)
mais le reste:
var (public var test), const (public const test), ca marche
alors au final pour publier un SWC pure AS3
totalement compatible Flash CS3 et Flex
que l'on compile avec compc
il faut faire ca
test/MyLibrary.as
----
package test
{
import flash.display.Sprite;
/**
* The basic framework Library to be included in the SWC.
* <p><b>Note :</b> This class is not a component, it just
* a shim that allow to declare the SWC manifest and associate an
icon file.</p>
*/
[IconFile("icon.png")]
public class MyLibrary extends Sprite
{
public function MyLibrary()
{
super();
}
}
}
----
manifest.xml
-----
<?xml version="1.0" encoding="utf-8"?>
<componentPackage>
<component id="mylibrary" class="test.MyLibrary" />
</componentPackage>
-----
build.xml
-----
<target name="library_component" description="build the Library
SWC component">
<echo message="building library component" level="verbose" />
<!--
iterate trough the src and generate the list of classes to
insert in the component
this way we are assured that all classes without exception
will be included
in the bytecode and no need to edit by hand a "library"
class.
-->
<fileset id="sources" dir="${release.tmp}">
<include name="**/*.as"/>
</fileset>
<pathconvert property="classes" pathsep=" " refid="sources">
<chainedmapper>
<globmapper from="${basedir}/build/tmp/*" to="*"/>
<mapper type="package" from="*.as" to="*"/>
</chainedmapper>
</pathconvert>
<echo message="classes is set to = ${classes}"
level="verbose" />
<!--
generate the Library SWC component
this SWC is compatible Flash and Flex
-->
<compc
output="${release.dir}/lib/${project.swc}"
include-classes="${classes}"
target-player="9.0.45"
>
<namespace uri="${project.namespace}" manifest="$
{project.manifest}" />
<include-namespaces uri="${project.namespace}" />
<strict>true</strict>
<optimize>true</optimize>
<warnings>true</warnings>
<verbose-stacktraces>false</verbose-stacktraces>
<compute-digest>false</compute-digest>
<source-path path-element="${release.tmp}" />
<external-library-path dir="${flex.libs}/player"
includes="playerglobal.swc" />
<external-library-path dir="${flex.libs}"
includes="flex.swc" />
<metadata date="${DATE}" title="${project.name}">
<creator name="Pim" />
<creator name="Pam" />
<contributor name="Poom" />
</metadata>
</compc>
</target>
-----
explications:
Flash CS3 ne verra pas de components si on a pas au moins une class
qui herite de Sprite ou MovieClip
oui pour Flash un component ne peut etre que visuel
c'est donc pour ca que l'on doit déclarer un manifest.xml avec un
namespace que l'on passe a compc
ce SWC au final sera compatible Flash CS3 et Flex
mais attention ce ne sera pas un vrai component visuel,
mais juste une librairie
dans un project Flex (mxml)
juste un dragNdrop dans /libs
dans un fichier *.fla
juste un dragNdrop des components vers la library
oui vous pouvez aussi faire un dragNdrop du component sur la timeline
mais vous aurez un beau rectangle vide qui une fois compilé ne crée
aucune instance
(pour avoir une instance sur la timeline et pouvoir configurer le
component visuel
il faut creer tout ca dans Flash CS3 et faire "exporter SWC" a la main
grrrr)
c'est pas encore ca mais au moins ca permet de distribuer
des components code-only dont le bytecode sera utilisé soit par Flex
ou Flash
pour le cas de Flash CS3, c'est qd meme plus simple pour nous dev
de generer un SWC que passer par un *.xmi pour generer un *.mxp et
ajouter
le code source dans les paths de Flash CS3
zwetan
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "FCNG" de
Google Groupes.
Pour transmettre des messages à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [EMAIL PROTECTED]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/FCNG?hl=fr
-~----------~----~----~----~------~----~------~--~---