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
-~----------~----~----~----~------~----~------~--~---

Répondre à