10
I Use This!
Activity Not Available

News

Analyzed about 1 year ago. based on code collected about 1 year ago.
Posted about 17 years ago by eKameleon
1 - Généralité Pour contrôler la timeline d'une animation Flash ou d'un MovieClip nous avons l'habitude depuis les toutes premières versions de l'ActionScript d'utiliser les méthodes play(), stop(), gotoAndStop(), etc. de la classe MovieClip. En ... [More] AS3 de nouvelles propriétés et méthodes sont apparues pour rendre encore plus souple notre maitrise de la timeline et de nos animations. Nous pouvons noter l'apparition de la classe flash.display.FrameLabel qui permet d'obtenir à n'importe quel moment via un objet typé toutes les informations d'une imagé clé portant une étiquette d'image spécifique. Ou encore la possibilité d'utiliser une méthode non documenté addFrameScript() qui permet d'injecter dans les images clés d'un MovieClip des fonctions selon les besoin au runtime. Malgré ces outils de base, j'ai eu très vite besoin d'aller un peu plus loin et de standardiser dans l'extension ASGard de VEGAS avec 3 classes bien pratiques pour manipuler le scénario d'un MovieClip. Ces classes sont : asgard.display.TimelineInspector asgard.display.TimelineIterator asgard.display.TimelineScript Pour utiliser ces classes je vous invite à récupérer les sources de VEGAS (pour ceux qui ne l'ont pas encore récupéré les sources AS3 ;)) : http://code.google.com/p/vegas/wiki/InstallVEGASwithSVN?tm=4 Pour toute question sur VEGAS et ses extensions vous pouvez vous inscrire sur le Google Groups du projet : VEGASOS . 2 - La classe asgard.display.TimelineInspector Cette classe diffuse des événements de type asgard.events.FrameLabelEvent avec le type défini dans la constante FrameLabelEvent.FRAME_LABEL. Elle prend la main par composition sur un MovieClip et injecte via la méthode addFrameScript des fonctionnalités dans le MovieClip pour diffuser des événements pendant la lecture du clip lorsque la tête de lecture rencontre un clip contenant une image clé portant une étiquette d'image. Cette classe permet en gros comme pour des vidéos d'injecter au runtime des "cue points" et permet de très rapidement prendre la main avec des fonctionnalités avancées ActionScript sur une animation simple générée par un graphiste ou animateur qui n'a pas trop l'habitude de manipuler l'ActionScript (si si cela existe encore malheureusement). Il faudra juste qu'il mette des étiquettes sur les images clés importantes de son animation. Exemple d'utilisation : package examples { import asgard.display.TimelineInspector; import asgard.events.FrameLabelEvent;   import flash.display.FrameLabel; import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.MouseEvent; import flash.utils.setTimeout;   /** * Example with the asgard.display.TestTimelineInspector class. */ public dynamic class TestTimelineInspector extends Sprite {   public function TestTimelineInspector() {   // stage   stage.align = StageAlign.TOP_LEFT ; stage.scaleMode = StageScaleMode.NO_SCALE ;   // target   // "mc" a MovieClip in the stage of the application mc = getChildByName("mc") as MovieClip ;   mc.useHandCursor = true ; mc.buttonMode = true ;   mc.addEventListener( MouseEvent.CLICK , click ) ;   trace("Click the movieclip to start the example.");   // timeline inspector   var inspector:TimelineInspector = new TimelineInspector( mc , true ) ;   inspector.addEventListener( FrameLabelEvent.FRAME_LABEL, frameLabel ) ; }   public var mc:MovieClip ;   /** * Run the test. */ public function click( e:MouseEvent ):void { mc.play() ; }   /** * Invoked when a new frame label notify a FrameLabelEvent. */ public function frameLabel( e:FrameLabelEvent ):void { var frame:FrameLabel = e.frameLabel ; trace( "frameLabel :: " frame.frame " : " frame.name ) ; switch( frame.name ) { case "finish" : { mc.stop() ; break ; } case "middle" : { mc.stop() ; setTimeout(mc.play, 5000) ; // pause 5 seconds break ; } } } } } Le code précédent est très simple, il suffit donc de prendre la main sur un MovieClip en tapant simplement : var inspector:TimelineInspector = new TimelineInspector( mc , true ) ; A noter que le second paramètre du constructeur de la classe TimelineInspector permet de lancer automatiquement la fonction stop() du MovieClip ciblé pour arrêter tout de suite sa lecture (par exemple si le graphiste n'a pas mi de code sur la première image clé de l'animation pour stopper celle ci). Il suffit donc ensuite d'écouter l'événement de type FrameLabelEvent.FRAME_LABEL pour recevoir les notifications pendant la lecture de l'animation. Dans l'exemple ci-dessus il faut cliquer sur le MovieClip pour lancer son animation. A noter que vous pouvez retrouver cet exemple et ceux des autres classes de cet article dans le SVN de ASGard dans le répertoire AS3/trunk/examples (ou de VEGAS en external dans le répertoire AS3/trunk/bin/tests). 3 - La classe asgard.display.TimelineIterator Permet en se basant sur le design pattern Iterator implémenté via une interface dans le package system.data de parcourir facilement dans les 2 sens l'animation d'un MovieClip. Comme si un MovieClip était une collection d'image clé. La classe TimelineIterator prend la main par composition sur un MovieClip et permet via les méthodes hasNext(), hasPrevious(), next() et previous() de naviguer facilement d'une image clé vers une autre. Exemple : package examples { import asgard.display.TimelineIterator;   import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.ui.Keyboard;   /** * Example with the asgard.display.TimelineIterator class. */ public dynamic class TestTimelineIterator extends Sprite { public function TestTimelineIterator() { stage.align = StageAlign.TOP_LEFT ; stage.scaleMode = StageScaleMode.NO_SCALE ;   var mc:MovieClip = getChildByName("mc") as MovieClip ;   it = new TimelineIterator( mc , 2 ) ;   trace( "timeline current frame : " it.currentFrame ) ; trace( "timeline total frames : " it.totalFrames ) ;   stage.addEventListener( KeyboardEvent.KEY_DOWN , keyDown ) ; }   public var it:TimelineIterator ;   /** * Invoked when key is down. */ public function keyDown( e:KeyboardEvent ):void { var code:uint = e.keyCode ; switch(code) { case Keyboard.LEFT : { if ( it.hasPrevious() ) { it.previous() ; } else { it.last() ; } break ; } case Keyboard.RIGHT : { if ( it.hasNext() ) { it.next() ; } else { it.reset() ; } break ; } } trace( "timeline : " it.currentFrame " | " it.totalFrames " | frame label : " it.currentLabel ) ; } } } Pour contrôler le MovieClip il suffit de créer une instance de type TimelineIterator avec un constructeur défini avec les arguments suivants : new TimelineIterator( target:MovieClip , framePosition:Number=NaN, stepSize:uint=1 ) Le premier argument "target" permet de cibler le MovieClip Le second argument "framePosition" optionel permet de définir l'image clé sur laquelle on souhaite débuter l'itération. A noter que le TimelineIterator se sert de la méthode gotoAndStop() pour se déplacer dans l'animation d'un clip et en définissant un numéro d'image clé dans le constructeur de la classe permet donc de positionner tout de suite l'animation à l'image clé voulu et d'arrêter l'animation. Le troisième et dernier argument "stepSize" optionel permet de changer la valeur des "sauts" entre une itération et une autre. Par défaut le saut est simplement d'une seule image clé mais dans certains cas il est possible d'augmenter cette valeur. Je vous invite à regarder de plus prêt la classe TimelineIterator pour en découvrir toutes les propriétés et méthodes. Cette classe implémente l'interface system.data.OrderedIterator. 4 - La classe asgard.display.TimelineScript Permet d'injecter dans une image clé d'un MovieClip une fonction en ciblant son numéro ou son nom d'étiquette. Cette classe ressemble beaucoup à la classe TimelineInspector mais permet de maitriser toutes les images clés d'un MovieClip. La classe TimelineInspector diffuse uniquement des événements pendant la lecture des images clés possédant une étiquette. Exemple : package examples { import asgard.display.TimelineScript;   import flash.display.MovieClip; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.MouseEvent; import flash.utils.setTimeout;   /** * Example with the asgard.display.TimelineScript class. */ public dynamic class TestTimelineScript extends Sprite {   public function TestTimelineScript() {   // stage   stage.align = StageAlign.TOP_LEFT ; stage.scaleMode = StageScaleMode.NO_SCALE ;   // target   mc = getChildByName("mc") as MovieClip ; mc.useHandCursor = true ; mc.buttonMode = true ;   mc.addEventListener( MouseEvent.CLICK , click ) ;   trace("Click the movieclip to start the example.");   // timeline script   var ts:TimelineScript = new TimelineScript( mc , true ) ;   ts.put( "begin" , start ) ; ts.put( "middle" , pause ) ; ts.put( "finish" , finish ) ;   }   public var mc:MovieClip ;   public function click( e:MouseEvent ):void { mc.play() ; }   public function start():void { trace("start") ; }   public function pause():void { trace("pause") ; mc.stop() ; setTimeout( mc.play , 4000 ) ; // pause 4 s }   public function finish():void { trace("finish") ; mc.stop() ; } } } Comme la classe TimelineInspector la déclaration d'une instance de type TimelineScript est facile, il suffit de cibler un MovieClip en tapant simplement : var script:TimelineScript = new TimelineScript( mc , true ) ; Le second argument optionel permet de lancer automatiquement la fonction stop() du clip sélectionné pour le mettre en pause. Ce paramètre est très pratique quand le graphiste n'a pas pris le temps de mettre de stop() sur la première image clé d'un clip posé sur la scène principale par exemple. Il sera alors très simple de prendre la main sur un ou plusieurs clips et ainsi d'orchestrer leurs contenus correctement. A noter que les classes TimelineScript et TimelineInspector utilisent en internent la méthode addFrameScript et qu'il est préférable de ne mettre aucun script dans les images clés du clip ciblé et bien entendu d'éviter d'utiliser la méthode addFrameScript sur le clip, ce qui pourrait écraser les fonctionnalités injectées dans les "helper" définis dans l'application. J'espère que ces 3 petites classes vous aideront dans vos applications et n'hésitez pas à me faire savoir quelles fonctionnalités vous aimeriez voir apparaitre par la suite dans ces classes ou dans le package asgard.display. [Less]
Posted about 17 years ago by [email protected] (Matthieu)
Salut, Dans le développement d'une application flash avec vegas, je n'ai pas trouvé avec l'exemple egallery, comment appeler une méthode de mon service amfphp depuis un évènement diffusé par le modèle ? J'utilise comme l'exemple egallery le premier appel de la méthode du service amfphp configuré via un fichier eden.
Posted about 17 years ago by [email protected] (eKameleon)
Hello :) Pas mal de problèmes de spams ces derniers temps. J'ai donc changé la gestion du Google Groups pour filtrer au mieux les robots et autres débiles... Du coup pour toute nouvelle inscription, tout nouveau membre doit me faire un petit message dans le formulaire d'inscription du groupe.
Posted about 17 years ago by [email protected] (eKameleon)
Petit message rapide pour vous annoncer la sortie d'une petite classe pratique dans ASGard : TimelineInspector. Un peu en réponse à un code que j'ai pu voir ce matin sur le DevNet de Adobe... qui utilisait un onEnterFrame pour écouter les labels ... [More] d'un clip et diffuser des événements... Donc pour un petit exemple de la classe vous pouvez consulter ce petit [Less]
Posted about 17 years ago by [email protected] (benoxy)
Bonjour, Je me plonge dans VEGAS actuellement car j'ai un site à faire. Aurais tu un tuto dédié à la configuration ou plutôt l'utilisation de VEGAS dans Eclipse ( Europa ) Version: 3.3.2 Build id: M20080221-1800 ? Merçi d'avance pour ton aide Benjamin
Posted about 17 years ago by [email protected] (ytehsgsgda)
Nude Photos, Caught Swimming Naked Nude Boob Exposed At Beach Courtney Cox fights to keep her bikini top in place as daughter Coco has other ideas and exposes her mom's right breastWebSugar weekend links.. have a great weekend, more nakedness on Sunday. [link] The Weekend Links picture is safe to click this week… but dont have
Posted about 17 years ago by [email protected] (ytehsgsgda)
Hot sexy Blonde Beautiful girl ?Bad Girls Club?: Pop Off Remix! New York Sex Tape? Online Videos by Veoh.com The Bad Girls Club airs Tuesdays on Oxygen at 10pm/9c. For more info, check out badgirlsclub Chester Beth Ann Chester is a 26-year-old ... [More] health and physical education teacher at Moon Area High School in Pittsburgh who faces nine criminal charges for…. [Less]
Posted about 17 years ago by [email protected] ([email protected])
Hot boobs and cleavage show bathing pictures Sexy Beach Volley Ass Compilation girls showing her bra and panty on beach topless onlines!!!!!!!! This movie is about how a B-GRADE movie is [link] picturised,the sort of rehearsals that go on, at what instances the director says cut and how they continue the mood, it has got a very
Posted about 17 years ago by [email protected] ([email protected])
Hooters 2009 Bikini Calendar Gallery Boobes beat!!SEX ! SEX ! SEX ! PLAYIN' WITH MY BIG TOYS ! Gettin' really Naughty and dirty ! Titty ******* ! bikini model and Celebrity Style iBoobs — not approved by Apple. iJiggly — approved by Apple. If you can see a difference in the two video demos below, let me know. Learn
Posted over 17 years ago by [email protected] ([email protected])
Hot Sexy Naked Topless Boobs Video Pics - Bikini Wallpapers Hot nipples bikini boobs tits huge big super wet naked girls She worked as a professional model in London, New York and Los Angeles, and has also appeared in music videos for such artists as Meat Loaf, Lenny Kravitz, Antonello Venditti and The Lemonheads. In