Calendrier

Février 2012
Lu Ma Me Je Ve Sa Di
<< >>
12345
6789101112
13141516171819
20212223242526
272829

CS SDK sous flashdevelop en AS3 pure

Dernière mise à jour Jan 26 2011

CS SDK, Q'uest-ce que c'est :

En 2010, Adobe a sorti une version reforgée du CS SDK .
Comme son nom l'indique c'est le kit de développent logiciel de la "creative suite 5".
Il offre un accès profond aux API de la plupart des logiciels CS5 via le language Actionscript 3 en utilisant également le runtime AIR.
On peut ainsi imaginer et développer toute sorte de plugin de la boite de dialogue au tooltip en passant par les panneaux.

Malheureusement :

  • le guide du CS SDK explique le fonctionnement avec FlashBuilder4 pour un projet de type MXML uniquement.
  • le SDK doit utiliser une version modifiée du SDK Flex antérieure à spark :
    Si je pense pouvoir réellement apprécier les composant spark, je sais que ne supporte pas ceux de l'espace de nom mx. En générale l'AS3 me semble suffisant.

J'ai donc voulu voir si l'on pouvait faire fonctionner ce SDK avec Flashdevelop et ai noté la démarche sur windows 7.

Configuration préalable :


La doc indique qu'il faut faire quelques configs sur son ordi. Elles sont décrites pour les différents windows et mac dans la partie "Running and debugging your extension" du guide du CS SDK

Il faut donc :

  • ouvrir l'éditeur de registre de windows ([touche windows]+R, taper regedit et valider) pour y sélectionner le dossier "CSXS2Preferences" et y ajouter un valeur chaine nommée "PlayerDebugMode" avec pour valeur 1.
    reg.jpg
  • ajouter un fichier vide nommé "debug" dans le dossier de l'appli Photoshop dans le cas ou l'on veut faire un plugin pour ce logiciel. (Pour les autres logiciels ce n'est pas nécessaire).
  • créer un dossier au nom du projet à débugger dans C:\Users\<user>\AppData\Roaming\Adobe\CS4ServiceManager\extensions\ et y copier le dossier 'CSXS' présent dans le sample "HelloCreativeSuite"
  • ouvrir le fichier manifest.xml présent dans 'CSXS',
    • retirer le noeud "ScriptPath" (inutile ici),
    • renseigner l'attribut ExtensionBundleId avec un namespace unique pour le plugin (par ex : com.laDigitale.myPlugin)
    • renseigner les deux attributs 'id' du champ extension avec le même namespace inspiré du bundleId ( par ex :com.laDigitale.myPlugin.myExtention1 )
    • dans le noeud "Lifecycle" ajouter :
      <StartOn>
          <Event>applicationActivate</Event>
      </StartOn>
  • Il faut bien sur également télécharger le CS SDK (lien au pied de la licence.) et le poser dans un endroit cohérent pour y faire référence plus tard.

Configuration de FlashDevelop :

  • Lancer la dernière release de Flashdevelop (3.3.2 pour cet article)
  • Sélectionner project>newProject et créer un projet AS3 de type "AIR AS3 Projector"
  • aller dans project>properties
    • dans l'onglet "output" champ "output file", rechecher le dossier dans lequel a été mis le dossier CSXS et nommer le fichier de sortie dans ce dossier "Main.swf" (en cohérence avec le contenu du fichier "manifest.xml")
    • dans l'onglet "classpath" cliquer sur "add classpath" et rechercher le dossier contenant la CS SDK téléchargée précédemment pour y sélectionner le sous-dossier CreativeSuiteSDK/libs
    • dans l'onglet "compiler options" champs "custom path to Flex SDK" rechercher à nouveau le dossier contenant le CS SDK pour y sélectionner le dossier "CreativeSuiteSDK/CS Flex SDK 3.4.0"
    • cliquer sur ok pour valider
  • dans le pannneau "project" une série de lib doit avoir apparue dans un petit dossier ressemblant à un légo et nommé "libs"
    • faire un clic-droit sur "apedelta.swc" et sélectionner "add to library"
    • faire un deuxième clique droit et cliquer sur "options" pour passer cette lib en mode "external"
    • ajouter également "csawlib.swc" et toute autre lib qui peut être nécessaire (ex : csaw_photoshop.swc pour utiliser les API's de Photoshop) mais en gardant les options par défaut ( inclusion des classes référencées dans le code )
  • Ecrire un peu de code dans le fichier "Main.as" du projet
    package 
    {
        import flash.display.Sprite;
        import com.adobe.csawlib.photoshop.Photoshop;
        import com.adobe.photoshop.Application;
        
        /**
         * ...
         * @author Julien BEAUFILS
         */
        public class Main extends Sprite 
        {
            
            public function Main():void 
            {
                //Pour voir si le panneau est affiché correctement
                graphics.beginFill(0x00ff00);
                graphics.drawRect(0, 0, 100, 100);
                graphics.endFill();
    
                //Récuperer l'app Photoshop et y ajouter un document
                var app:Application = Photoshop.app;
                app.documents.add();
            }
            
        }
        
    }
  • Compiler avec F8 (pas ctrl+Enter)
  • dans le menu "debug" sélectionner "Start a remote session"
  • Lancer photoshop et observer le module se lancer immédiatement
  • fermer le panneau du module (pas Pquand les tests sont terminés
  • modifier et re-compiler
  • donner le focus à Photoshop
  • Le plug se relance en prenant en compte les modification apportées

Prêt à mélanger la plateforme Flash et les outils de la CS

Ce teste fonctionne sous Photoshop 32Bit mais il ne sera pas possible de débugger avec la version 64 bit : le débugger déclenchera systématiquement une exeption.
S'il n'est pas nécessaire de redémarrer Photoshop, des tests similaires avec Illustrator ont fon,ctionné à l'inverse. L'événement d'activation auuto ne sembe pas être reçu non plus par le panneau (tous les logiciels ne le reçoivent pas).

Pour le debugger par contre c'est très chouette :

  • les traces remontent bien dans la fenêtre output de Flashdevelop,
  • les Exceptions d'exécution s'affichent correctement :
    • on peut cliquer sur les fonctions dans la pile associée à l'erreur,
    • on est alors "envoyé" aux lignes de programme associées dans la sourcer.
    • on y voit les valeurs courants des variables en passant à la souris au dessus de leur nom dans le code.
    • on peut alors inspecter le contenu de ces variables de façon "récursive".

Pour le reste, il y a vraiment beaucoup à faire, je pense :

  • Automatisations de tout poil,
  • graphisme génératif,
  • liaisons entre logiciels (endo ou exo CS5),
  • utilisations de services web connus (traduction de texte, recherche spécialisée d'images en fonction de couleur : flick...) ou dédiés (process d'export et d'envoi de contenu à l'extérieur...).

0 Commentaires

Nom : E-mail : Site web : Message :