MTASC .. plus rapide que son ombre !
Par eKameleon le mercredi, octobre 19 2005, 12:33 - Flash - Lien permanent
Cela fait un moment que j'avais envie d'utiliser MTASC et de voir un peu ce qu'il avait dans le ventre. J'avais eu le temps de faire quelques tests dans Eclipse mais sans y prendre vraiment le temps et donc forcément sans vraiment réussir à grand chose et j'étais surtout affolé à l'idée de devoir reprendre complètement mes classes pour les rendre compatibles avec le compilateur plus rapide que son ombre...
A côté de cela cela fait quelques mois maintenant que je suis concentré sur un très gros projet qui mélange AMFPHP/FCS/AS2 et avec presque 500 classes à compiler à chaque fois, on peut pas dire que Flash soit vraiment bien foutu pour supporter ce genre de travail. Chaque test, chaque erreur dans mon code devenait rapidement un vrai supplice (même en isolant le plus possible chaque parcelle du projet). Il y a 2 semaines j'en ai eu raz le bol.. marre de toujours penser que je n'ai pas le temps de faire autrement... marre d'avancer lentement... j'ai pri une bonne fois pour toute la décision de changer ma vie (non je rigole :happy: juste de méthode de travail).
J'avais gardé en mémoire l'article de Stéfane Funaro sur son blog "MTASC a changé ma vie" et franchement.. j'ai comme l'impression qu'il est en train de changer la mienne aussi :happy:
J'ai commencé par reprendre entièrement mon code, c'est en fait ce qui a était le plus long, c'est là où l'on découvre que les apparences sont souvant trompeuses... en compilant avec MTASC c'est affolant le nombre d'erreurs que j'avais pu laisser passer ! :ouch: Heureusement en utilisant Eclipse et FlashOut c'est assez simple de retrouver toutes les erreurs qui passent comme une lettre à la poste dans Flash. Avec un peu de patience et de motivation j'ai réussi à couvrir l'intégralité de mon code (raz le bol de se taper la tête contre l'écran à chaque compilation dans Flash.. c'est une bonne motivation je trouve).
Maintenant que tout est opérationnel au niveau du code, c'est le choix des outils qui est le plus difficile. Je débute encore avec tout cela... donc pour le moment je garde Flash pas trop loin, comme Stéfane Funaro, pour avoir la possibilité de changer rapidement le contenu de ma bibliothèque, même si il est vrai que la possibilité de ne pas l'ouvrir du tout provoque un effet de liberté.... J'utilise encore SEPY car je le trouve plus sympa (pour le moment surement) que Eclipse pour coder (question d'habitude mais les habitudes cela peut se changer). Je reste fidèle à Sepy pour le moment, j'adore le petit bouton Check Syntax using MTASC qui est vraiment une bouffée d'air frais dans ma production de tous les jours, il est également moins lourd à lancer que Eclipse. Pour le moment le seul petit problème c'est le panneau de configuration et de prévisualisation de MTASC sui n'est pas encore très au point, à première vue il est impossible pour le moment de fermer la fenêtre de preview sans fermer complètement le panneau, perte de vitesse au niveau de l'ergonomie du panneau, il s'ouvre toujours n'importe comment etc.. mais je pense que c'est provisoire, Alessandro Crugnola (aka Sephiroth) a fait un vrai petit bijou et j'attends avec impatience la version 2 de SEPY pour voir si je passe à Eclipse ou non... Je vois bien un genre de FDT intégré dans SEPY... on verra bien 
Pour finir, dernier petit point important, c'est le debugage de mes applications. J'ai pas le temps pour le moment de me confectionner ma propre console externe de Log donc j'ai décidé d'utiliser l'excellent API de LuminicBox : LuminicBox.Log, API de logging para Flash
A noter au passage que pour l'utiliser avec MTASC j'ai du changer un peu l'interface IPublisher en supprimant le premier import qui était inutile.
/* * Copyright (c) 2005 Pablo Costantini (www.luminicbox.com). All rights reserved. * * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.mozilla.org/MPL/MPL-1.1.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //import LuminicBox.Log.Level; // ici MTASC il apprécie pas l'import inutile import LuminicBox.Log.LogEvent; /** * Basic publisher interface. All publishers must implement it. */ interface LuminicBox.Log.IPublisher { /** * Publishes the supplied LogEvent.<br /> * The task this method must acomplish depends on the publisher. */ function publish(e:LogEvent):Void; /** * Returns the publisher's type or name. */ function toString():String; }
Pour le reste je me suis inspiré rapidement de la classe SuperTrace de Stéphane Bebrone (aka Shaoken) pour remplacer dans MTASC mes trace() et avoir une sortie accessible facilement.
A noter que MTASC a changé depuis que Shaoken a sorti sa classe sur le wiki de mediabox et qu'actuellement la classe DefaultConfig du package LuminicBox pose problème... à l'intérieur la classe TracePublisher utilise une trace() et cela provoque donc une boucle infinie (ou presque) au niveau de la console à chaque fois qu'on cherche à faire une trace() dans son code.
Je tiens à remercier au passage Shaoken pour sa réactivé à ce sujet. J'ai pu grace à ses conseils avisés supprimer l'appel de la classe DefaultConfig et je me suis permi en attendant qu'il mette à jour sur le wiki de mediabox sa classe, de coder ma propre version utilisant dans les grandes lignes la logique de la sienne et les en ajoutant quelques petites modifications :
classe Level : Permet de gérer les énumérations statiques pour configurer le niveau d'un Log
/* ---------- Level Name : Level Package : eka.debug Version : 1.0.0.0 Date : 2005-10-18 Author : ekameleon URL : http://www.ekameleon.net Mail : contact@ekameleon.net ---------- */ class eka.debug.Level { // ----o Author Properties public static var className:String = "Level" ; public static var classPackage:String = "eka.debug"; public static var version:String = "1.0.0.0"; public static var author:String = "ekameleon"; public static var link:String = "http://www.ekameleon.net" ; // ----o Constructor private function Level() { // } // ----o ENUMS static public var DEBUG:String = "debug" ; static public var ERROR:String = "error" ; static public var FATAL:String = "fatal" ; static public var INFO:String = "info" ; static public var WARNING:String = "warn" ; }
classe LuminicDebug : Permet de tracer via la console de LuminicBox
/* ---------- LuminicDebug Name : LuminicDebug Package : eka.debug Version : 1.0.0.0 Date : 2005-10-18 Author : ekameleon URL : http://www.ekameleon.net Mail : contact@ekameleon.net THKS : Stéphane Bebrone (aka Shaoken) http://wiki.media-box.net/classes/flash/be/shaoken/utils/supertrace ---------- */ import eka.debug.Level ; import LuminicBox.Log.ConsolePublisher ; import LuminicBox.Log.Logger ; import LuminicBox.Log.IPublisher ; class eka.debug.LuminicDebug { // ----o Author Properties public static var className:String = "LuminicDebug" ; public static var classPackage:String = "eka.debug"; public static var version:String = "1.0.0.0"; public static var author:String = "ekameleon"; public static var link:String = "http://www.ekameleon.net" ; // ----o Constructor private function LuminicDebug () {} // ----o Static Public Properties static public var viewInfo:Boolean = false ; static public var defaultDepth:Number = 1 ; // ----o Static Virtual Properties static public function get maxDepth():Number { return _console.maxDepth ; } static public function set maxDepth(n:Number):Void { _console.maxDepth = (n>0) ? n : defaultDepth ; } // ----o Static Public Methods static public function addPublisher(p:IPublisher):Void { _logger.addPublisher(p); } static public function initialize(id:String, depth:Number):Void { if (_logger && _console) _logger.removePublisher(_console) ; _logger = new Logger(id) ; _console = new ConsolePublisher(); _console.maxDepth = depth || defaultDepth ; _logger.addPublisher(_console); } static public function trace (message , level:String):Void { switch(level) { case Level.ERROR : case Level.FATAL : case Level.INFO : case Level.WARNING : level = level ; break ; default: level = "debug" ; } _logger[level].apply(_logger, [message]) ; } static public function traceReplacer( message, level:String ) { LuminicDebug.trace(message, level) ; } static public function toString():String { return "[LuminicDebug]" ; } // ----o Static Private Methods static private var _logger:Logger ; static private var _console:ConsolePublisher ; }
Exemple d'utilisation :
import eka.debug.Level ; import eka.debug.LuminicDebug ; class test.debug.Test { // ----o Main static public function main() { LuminicDebug.initialize("__myTest__", 3) ; LuminicDebug.trace("First Test", Level.DEBUG) ; var test:Test = new Test() ; } // ----o Constructor function Test() { trace("Second Test", Level.WARNING) ; // LuminicDebug.maxDepth = 0 ; // réglage rapide de la profondeur pour parcourir un objet var o = {} ; o.toString = function () { return "[o]" ; } o.a = {} ; o.a.toString = function () { return "[a]" ; } o.a.b = {} ; o.a.b.toString = function () { return "[b]" ; } trace (o) ; } }
Il est certain que mon but au final c'est de développer ma propre console de Log. Mais en attendant et par faute de temps c'est vraiment une très bonne solution 
Bref... tout cela pour dire que je vais enfin pouvoir produire et ne plus subir 8)
Commentaires
Pour reparler du temps de compilation. Pour ton gros projet plein de classe, quand tu compiles avec Flash ca prend combien de sec environ ? et avec MTSAC combien environ ?
Merci
Jusqu'il y a peu, je restais également fidèle à Sepy coute que coute.


Sa plus grande force restait pour moi son intelissence de mieux en mieux gérée. Celle de ASDT étant, je trouve, vraiment trop peu réactive et parfois capricieuse. Puis j'y avais mes shorcuts, mes snippets, mes préférences de couleurs.. bref un deuxième chez moi
Puis, je suis devenu complètement fan de la fonction "go to definition" présente dans ASDT (touche F3) qui permet de gagner énormémemnt de temps lorsqu'on parcours un framework. J'ai commencé à personaliser ma perspective (j'ai retrouvé mes couleurs), j'ai créé mes propres templates... je commencais à vraiment trouver ca chouette malgré les quelques lourdeurs mentionées en début.
La vraie plus value de Eclipse dans mon travail quotidien c'est l'intégration de ANT. Pour chaque projet, je crée un fichier XML de build ANT (que je lance depuis un shortcut) et qui comporte plusieurs taches:
* Création des directory de base
* Compilation MTASC (avec plusieurs modes)
* Copie des fichiers générés vers un autre répertoire (deploy)
* ...
Tout simplement génial! 8) Je pourrais bien entendu utiliser ANT comme un outils externe depuis SEPY. L'idéal serait un mixe entre ASDT et SEPY.. dans ce sens j'ai des bons espoirs pour la V2 de SEPY.
Pour mes projets, je fonctionne ainsi:
* Création d'un fichier SWF nommé assets.swf à partir de l'IDE de Macromedia
* Injection du code depuis MTASC et génération d'un nouveau fichier (paramètre -out) build.swf
++
@Paul McCartney >>
Aprés quelques heures de boulot... en gros 1 à 2 minutes (parfois 3 à 4 minutes si j'ai beaucoup d'applications lancées en même temps lol) dans Flash avec tout l'ordi qui se fige et 2 à 3 secondes maxi avec MTASC (donc pas le temps de figer quoi que ce soit)....
@Shaoken >>
Pour le moment je commence à me familiariser de + en + avec Eclipse, et il est vrai que la gestion de projet est pas mal avec les Workspaces etc... maintenant je pense qu'il me faudra encore un peu de temps avant de me sentir bien avec et j'ai malheureusement pas le temps de trop m'attarder là dessus... cela viendra progressivement je pense. Faudra voir d'ici là si on aura pas une version Netbean (je préfère à Eclipse) et une version de SEPY2 qui m'évitera de changer d'éditeur... Aprés dans tous les cas je ferais surement avec ce qu'il y a de mieux... j'espère juste que cela me prenne moins de temps que d'utiliser MTASC par exemple :alien:
Hum... tu as essayé FlashDevelop?
Intellisense sans définition de projets, check ActionScript avec MTASC (erreurs cliquables), GUI pour MTASC et AS2API, logger intégré à la SOS (affichage dans la fenêtre de sortie), interface entièrement configurable en XML, même éditeur que SEPY, et plus léger qu'Eclipse.
2,3 minutes pour le compilateur de Macromedia Companie contre 2,3 secondes pour celui de Nicolas Canasse ?
C'est une blague ?
Le patron de MM doit appeller toutes les semaines N.Canasse pour le débaucher. Faut faire une pétition pour qu'il y aille, quelquechose.
@Philippe
Et faut dire (toujours cette histoire de temps...) j'ai pas approfondi mon utilisation de celui ci 

FlashDevelop je l'ai pas testé dans le contexte de MTASC
Mais là je vais prendre quelques minutes pour installer la nouvelle version et voir ce que je peux faire avec
@Paul McCartney
Non c'est pas une blague... donc forcément voilà pourquoi je suis si contant !
C'est justement une des caracteristiques de MTASC de compiler à la vitesse de l'eclair

Sinon, effectivement le FlashDev de Luminic, je m'en sert depuis un bout de temps, et c'est trés sympa
Ce qui me gène c'est qu'il laisse pas pour le moment (je vais arranger cela dès que possible) la possibilité de choisir sur un objet si l'on veut faire un Log sur sa structure ou sur les toString de sa structure... ou alors j'ai peut être raté encore une fois un truc.. faut que ce soir je regarde de plus prés les autres classes du package
Donc MTASC tu l'utilises parceque ça compile plus vite. Mais, MTSAC, ca existe pour quoi exactement ? Quel est le but ?
Le but je pense c'est de pouvoir faire gratuitement des swf en AS2 sans Flash et d'avoir un compilateur totalement openSource qui évolue vite et permet d'aller même plus loin que Flash lui même (avec en prime la liberté et le fait de ne pas payer une licence à Macromedia)

Ensuite MTASC permet d'être combiné à des solutions de développement comme Eclipse(gratuit), FlashOut(gratuit), FDT(payant)... et d'aller plus loin que dans Flash actuellement.
Tu as tout ce qu'il faut savoir sur le site de Mtasc et sur le site de http://www.osflash.org/ (le portail openSource de la communauté Flash)
EKA+
Essayer Eclipse, c'est l'adopter !
je l'essaye tous les jours... et c'est pas encore adopté
Mais bon ... je commence à me sentir mieux avec, donc rien n'est encore joué là dessus :rolleyes: Il y a tellement de bonnes idées dans SEPY... le top serait un mixe des 2 :D
Héhéhéhé! Bienvenue dans le club des convertis! Tu as eu la même hésitation que moi. J'ai hésité longtemps avant de m'y mettre. Mais pourtant, une fois lancé, ça m'a prit une soirée à "réparer" mes classes et m'adapter. C'est pas si pénible et ça vaut le coût!
Mon prochain article sera "FDT a changé ma vie". J'ai finalement acheté, c'est cher mais je remercie le ciel tous les jours du temps que FDT me sauve. Ça demande beaucoup de temps et efforts pour s'adapter à Eclipse je trouve, j'ai expérimenté une semaine avant de vraiment commencer à voir les avantages. Je n'ai pas encore tout maîtrisé, il me reste encore des trucs à apprendre, et déjà je suis aux anges...
A+
Ce qui me gene le plus dans Eclipse c'est de voir mon CPU monter à 100% apres quelques heures d'utilisation sans aucune raison apparente.

Je suis bon pour tuer le process javaw.exe et redémarrer l'IDE afin que tout rentre dans son état "normal".
Je n'ai pourtant pas une petite machine (ni un foudre de guerre). :?
Enfin le débat n'est pas la
FDT faudra que je l'essaye avant de savoir si oui ou non je l'achète... je reste encore dans l'idée que Alessandro Cugnola puisse nous sortir un truc dans le genre dans SEPY et tout gratuit mais bon
Mais peut être que je m'y prend mal auasi :O
Sinon au sujet des performances d'eclipe c'est pour moi un vrai problème ... car là en testant hier soir mes compilations dans Eclipse... le rendu de certains de mes swf tournent comme sur un P2400 alors qu'ailleurs c'est normal... et c'est un peu dommage je trouve
Au sujet des performance, ces trucs m'ont un peu aidé:
http://fdt.powerflasher.com/forum/viewtopic.php?t=147
Mais même avec cela, après un certain temps ça devient très lent. Et j'ai pourtant une vraie bombe toute neuve comme machine! C'est dommage. Mais je le redémarre de temps et temps et ça va bien. De toute façon, je prends toujours dans la journée une petite pause "jeu vidéo" pour laquelle je ferme les applications plus exigeantes comme flash, photoshop et maintenant eclipse, ainsi je n'ai pas de problèmes!
Pour SEPY, oui ce serait bien, mais je doute qu'Alessandro arrivera à suivre FDT qui continue de s'améliorer durant que lui améliore SEPY. La barre est haute... Dommage. J'ai longtemps été un gros utilisateur de SEPY, seul FDT a réussi à m'en faire décrocher.
a+
Salut,
en effet ca a l'air tentant comme outil mais cela manque de tutorial tout ca.
J'ai essayé d'imaginer passer un projet fait avec un .fla (pour le graphisme) et des .as pour le code, tout en MTASC, et je crois que j'ai vraiment besoin d'une METHODE
Ou alors si j'ai loupé un site "MTASC pour les nuls", je suis preneur :happy:
Tu as des bons tutos avec Eclipse (en anglais mais animé) sur FlashExtensions.
(mais je promets rien ^_^)
En français sur le wiki de mediabox : FAME
Et si j'ai un peu de temps je ferais un tuto rapide sur MTASC dans SEPY
Merci pour les liens.
Et je veux bien faire beta-testeur de ton tuto