Petit prob de débutant ^^

Signaler
Messages postés
4
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009
-
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010
-
Bonjour à tous,

Je débute avec l'AS3 et je rencontre quelques problèmes qui vous serons sûrement enfantin... Mais étant un débutant en code, c'est assez casse tête ...

Voilà; En gros je dois faire en sorte que lorsque l'on passe avec le pointeur un objet, un movie clip se lance en s'agrandissant (ici en l'occurence un effet de rayon qui tourne sur lui même ...) Et ce même movie clip s'arrête en rétrécissant lorsque l'on retire le pointeur de l'objet ( Je ne sais pas si je me fais bien comprendre ... lol ). J'ai essayé, j'en suis la :

import fl.transitions.Tween;
import fl.transitions.easing.*;

rayon.addEventListener(MouseEvent.MOUSE_OVER,grandi);
function grandi(e:MouseEvent){
var montween:Tween=new Tween (?????????????????????true);
}


rayon.addEventListener(MouseEvent.MOUSE_OVER,retrecit);
function retrecit(e:MouseEvent){
var montween:Tween=new Tween (???????????????????????????true);
}

Voilà , si quelqu'un peu m'aider ça serait bien sympa :)

Merci d'avance !

( dsl si fautes d'ortho ^^)

12 réponses

Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
Bonsoir,

Je ne peux que grandement te conseiller d'aller faire un tour là : http://help.adobe.com/fr_FR/AS3LCR/Flash_10.0/fl/transitions/Tween.html

Peg'
Messages postés
4
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009

Heuu Merci, au moins j'ai pigé ce qu'est un tween. Par contre je cherche dans la page, j'ai les définitionq mais je trouve pas la formule, ou du moins l'élément qui me permet de dire a mon objet de changer de taille. ( Si j'ai bien compris le contenue du lien, j'ai la base mais me manque le reste :S... Me manque ceci :

(myObject, "x", ??????????, 0, 300, 3, true);

Bon je continue mes recherches ^^

<merci pour="" le="" lien=""></merci>
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Salut,

new Tween( param_1, param_2, param_3, param_4, param_5, param_6, param_7 );

param_1 : nom du clip à tweener
param_2 : propriété du clip à tweener (_alpha, _x, _y, _rotation, _xscale ... etc)param_3 : type de transition > s'écrit en deux parties, première partie Strong, Elastic, Bounce et deuxième partie easeOut, easeIn ou easeInOut.
La première partie correspond à l'effet du mouvement (lisse, elastique, rebondit...).
La deuxième partie définit à quel moment du mouvement on applique l'effet choisit :
easeOut > l'effet choisit est appliqué sur la fin du tween (ralentit sur la fin)
easeIn > l'effet choisit est appliqué en début de mouvement puis s'efface sur la fin
easeInOut > mélange des deux
param_4 : position/etat de départ
param_5 : position/etat d'arrivée
param_6 : durée (dépend du param_7)
param_7 : peut prendre deux valeures "true" ou "false" > "true" signifie que le param_6 est en secondes, "false" signifie qu'il est en frames.

exemple complet (AS2) :

import mx.transitions.Tween;
import mx.transitions.easing.*;

monCLip.onRollOver = function(){
    new Tween( this, "_xscale", Strong.easeOut, this._xscale, 300, 1, true ); //...grossit jusqu'à 300% de son echelle sur x
}
monCLip.onRollOut = function(){
    new Tween( this, "_xscale", Strong.easeOut, this._xscale, 100, 1, true ); //...reprend sa valeure de 100% de son echelle horizontale
}

//---------

Sache qu'il existe d'autres moteurs de tween beaucoup plus performants et moins bloquants que ceux de flash.
Si tu débutes, je te conseilles d'oublier direct les tweens merdiques de flash et de consacrer ton énergie à l'apprentissage d'outils tels que TweenMax.
Va jeter un oeil ici > http://blog.greensock.com/tweenmaxas2/

Si tu bosses en AS3 ils sont également dispo et ultra performant, super simple à utiliser, beaucoup plus logique.

A+
seb
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Damned, en relisant ton post j'me rend compte que c'est justement en AS3 que tu bosses.
Bon ci-dessous le meme exemple mais en utilisant TweenMax et en AS3 :


import gs.TweenMax;
import gs.easing.Sine;
   
monClip.addEventListener( MouseEvent.ROLL_OVER, over );
monClip.addEventListener( MouseEvent.ROLL_OUT, out );   

function over( e:MouseEvent ):void
{
    TweenMax.to( e.currentTarget, 2, { scaleX:3, ease:Sine.easeOut } );
}

function out( e:MouseEvent ):void
{
    TweenMax.to( e.target, 2, { scaleX:1, ease:Sine.easeOut } );
}




A noter : en AS3, 100% se dit 1. Dans cet exemple, scaleX:3 équivaut au _xscale:300 de l'AS2.
Tu peux télécharger le pack TweenMax AS3 >>>ici<<<

Colle le dossier gs dans ton dossier de prod et vérifie que le chemin d'appel lors de l'import est le bon
import dossier.dossier.dossier...etc etc jusqu'à TweenMax (sans .as)

bon courage
re seb
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
Je serais bien curieux de savoir ce que tu reproches au tween fournis dans l'as3. Pourrais-tu nous en dire plus s'il te plait ?

Peg'
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Salut Peg,
J'était en train de te poster un réponse avec un lien (celui-ci) et mon pc à planté (lorsque j'ai lancé le test présent dans le lien en choisissant les tweens de flash comme moteur...soit dit en passant) snif. Je recommence :
En me basant sur mon experience du terrain et non sur des connaissances que je ne prétends pas avoir, on est bien d'accord :
> les tweens de flash s'interceptent entre eux.
> le résultat visuel final n'est pas du tout satisfaisant sur des interpolations évoluées.
> tweenMax est simple et logique
> très efficace graphiquement

Pour l'histoire, j'ai débuté avec les tweens de flash en AS2 et au début j'en étais très content (mieux que des enterFrame et mc._x + = 10 ).
Le truc qui m'a rendu fou > tu déclares deux Tweens, un sur le over et un sur le out d'un clip. Si tes deux tweens n'ont pas rigoureusement la même durée > bug graphique : lorsque le deuxième tween est déclenché alors que le premier n'est pas terminé, le clip entame son deuxième mouvment puis va brusquement s'immobiliser sur la position finale du premier tween...snif

Je suis tombé sur le lien donné plus haut, un comparatif de performances entres différents types de classes tween.
Il a fallut en choisir une, j'ai choisit la tweenMax pour sa simplicité de déclaration, son efficacité de rendu et la doc qui va bien avec.
Depuis je n'ai eu aucun soucis avec cette classe, je suis très satisfait des rendus et de son utilisation. J'ai trouvé mon bonheur.

Depuis que je me suis mis à l'AS3 je t'avoue que je n'ai pas pris le temps de tester les tweens de flash et sincèrement je pense que je ne le prendrai pas (si je l'avais ^^).

Tu les utilises ? Tu en es satisfait ?

a+
seb
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
Oui, je les utilisent depuis as3, et j'en suis ravis (il suffit de regarder le jeu BurgerGame qui a remporté le concours) .
Elles permettent même d'outre-passer le framerate et donc de rester "rapides" au détriment de la fluidité.

Mais je n'ai pas comparé avec les tweens "custom" donc je ne saurais pas te dire si elles sont mieux ou moins bien .. d'où ma question justement.

Peg'
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Je viens de faire une partie de BurgerGame.
C'est graphiquement très beau et le code semble très propre. Beau boulot.

Pour revenir à tweenmax, il permet peut etre plus facilement qu'avec un tween de flash de déclarer plusieurs tweens en une ligne.
TweenMax.to(clip, speed{ ici autant de propriétés a tweener que tu veux, ne mettre que les valeures d'arrivée souhaitée })
tu peux également y ajouter du onComplete (avec du onCompleteParameters qui te permet de passer des paramètres à la fonction appellée en complete.
pas besoin de listener.
Bon tu peux quand meme lui adjoindre des listener TweenEvent, tu dois avoir les onMotionChange, Finish etc.

qu'est-ce-que j'voulais dire, .... oui un exemple de plusieurs modifs en une ligne :
TweenMax.to( tonClip, taVitesse{ x:taValeure, y:tonAutreValeure, width:, alpha, rotation, effetDeFlou ... etc } )
remarque : taVitesse n'a pas d'unitée à préciser, c'est des secondes.

Il y'a beaucoup d'effets de transitions (une petite 30aine au moins, bon ok il y'en a qui se ressemble beaucoup ... -_-)

Ce qui est interessant aussi c'est la possibiliter de tweener via un parcours précis en fournissant les coordonnées des points à survoler

Je ne me rappel plus comment étaient déclarés les décalages de début du tween dans la version de flash,
dans tweenmax c'est à rajouter "delay:en_secondes" dans l'objet params

Bref >>> http://blog.greensock.com/tweenmaxas3/ pour tous les exemples et décriptions plus précises

Je fatigue un peu là, mais sujet à suivre ^^
a+ seb
Messages postés
4
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009

Merci sep2vigne pour ton aide :)
J'ai su m'arrangé avec mon problème, mais tes infos sur les tween m'ont aidé ^^ ( Je savais même pas qu'on pouvait avoir différent moteurs pour ce genre de choses : S )


Par contre j'ai un autre soucis ( encore tout bête ) En parcourant un book sur l'action Script, j'ai pu chipoter et faire un curseur animé... Problème c'est de l'AS.01 et je n'arrive pas à le convertir en 03 ^^



function CurseurOs(movieclip) {
Mouse.hide();
_root.attachMovie(movieclip,"perso",9999);
_root.perso.startDrag(true);
}
CurseurOs("curseur");



Merci d'avance
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Salut Esee,
heureux que tu t'en sois sorti :)

Effectivement en AS3 on n'appel plus les choses de la même façon.

Par exemple, comme tu l'as remarqué, en AS1 et AS2 on mettait des "_" (underscore) devant les propriétés des clips ( _x, _y, _alpha ... etc).
En AS3 les "_" on disparus (et c'est tant mieux).

Autre exemple > l'utilisation du "_root".
Pour commencer, on enlève donc le "_", ce qui nous donne "root".
Ensuite, lorsqu'en AS1 ou 2 le "_root" signifiait le niveau racine de mon animation, en AS3 le "root" cible le niveau racine de mon animation en cours... si une animation en charge une deuxième elles auront chacunes leurs "root" distinct. Plus question alors de parler à ton anim principale depuis ton anim secondaire en utilisant du "root".
Enfin, en AS1 et 2 on m'a toujours déconseillé d'utiliser cette propriété au profit du _parent qui permet de remonter les niveaux jusqu'à la surface (la surface étant le fameux _root).

Maintenant pour ce qui est de ton startDrag :

En AS3 l'idée est de travailler avec des clips conteneurs auxquels tu ajoutes des clips enfants.
Tu ne fais plus de "_root.attachMovie" mais plutot > "monConteneur.addChild(sonFils)".
Donc pour faire simple, ta scène principale est le méga conteneur, auquel tu addChild d'autres conteneurs qui eux memes contiendront d'aure conteneurs ... etc etc

Ce que tu souaites faire ici c'est remplacer le curseur de la souris par un curseur perso (arrettes moi si je me trompe).

Voici une procédure type pour faire cela :

PREPARER TON CLIP DANS LA BIBLIO
> dans la bibliothèque tu as un clip de ton nouveau curseur (le graphisme si tu veux mais regroupé sous forme d'un seul clip)
> un clique droit sur ce clip dans la bibliothèque puis click sur "liaison" te donne accès à la fenêtre de liaison que tu connais bien si tu utilisais déjà les attachMovie.
> cette fois au lieu de donner un nom de liaison, tu vas laisser le premier champ vide et donner, dans le deuxième champ, un nom de classe à ton clip. Par exemple "Curseur" (par convention les noms de classes commencent par des majuscules.)
> clique sur les deux boutons à côtés du deuxième champ pour valider ta nouvelle Classe, flash t'informe qu'elle n'existe pas et qu'il la créera automatiquement à l'export ... très bien c'est ce qu'on veut.

> pour finir, vérifie que le troisième champ "Classe de base" est bien remplit par flash.display.MovieClip

ECRIRE TON CODE
le clip est dans la biblio mais pas sur la scène.
La première chose à faire pour pouvoir l'importer sur la scène est de créer une nouvelle instance de la classe Curseur (un nouveau curseur quoi).
var curseur:Curseur = new Curseur();

A partir de là, ton curseur existe mais n'est pas visible. Pour l'ajouter à la liste d'affichage, c'est à dire pour qu'il existe visuellement, il faut l'ajouter à un conteneur.
addChild(curseur);

IMPORTANT :
Tout dépend d'où tu écris ton code, est-ce sur la scène principale dans un calque vide ? (ha oui pour info, j'spère que ca n'est pas le cas, mais en AS3 c'est finit les scripts collés à chaque bouton. Si tu veux taper ton code dans flash, tu ajoute un calque vide en haut de ta pile de calques et après avoir cliqué dessus > F9 et en avant.)
Bref, prends l'habitude de regrouper l'ensemble de ton code sur ce fameux calque code, les seules instructions qui peuvent se trouver dans des clips sont des stop(); play(); gotoAndStop(); etc...
D'autant plus que l'idée en AS3 c'est de travailler avec une classe de document, une classe dédiée à ton animation (en bas de la fenêtre).

Bon je résume pour pas écrire un pavé :
imaginons que tu sois bien en train d'écrire le code proprement dans un calque vide à la base de ton animation.
Entre la déclaration de la nouvelle instance de Curseur et l'intruction pour l'afficher, on retape les éléments de ton code demandent au clip curseur de suivre les mouvements de la souris et à celle-ci de disparaitre :
var curseur:Curseur = new Curseur();
//...
curseur.x = mouseX; //optionnel

curseur.y = mouseY; //optionnel
curseur.startDrag(true);
Mouse.hide();
//...
addChild(curseur);

Voilou,
Pour conclure,
> finit les "_"
> finit les "attachMovie"
> ultra finit les "_root"
> ultra giga mega finit les bouts d'codes intégrés aux clips

et essaye toujours de regrouper ton code au maximum pour finalement arriver un jour à utiliser une classe de document dédiée à ton fichier flash.

Si tu as envie d'apprendre l'AS3, je n'saurrais que trop te conseiller de jeter un oeil ici
Je suis moi même en train de me former à l'AS3 graçe à ce bouquin.

A+
Sep
Messages postés
4
Date d'inscription
mardi 13 janvier 2009
Statut
Membre
Dernière intervention
25 janvier 2009

Un grand merci !

Tu m'as éclairé sur pas mal de points grâce à tes explications claires et précises ! C'est sympa d'aider ceux qui débutent dans le codage :) ( Et apparemment l'AS.03 est loin d'être le plus simple )

Merci pour le bouquin ! Il va m'être très utile dans les mois à venir ^^

Bon ben je retourne me casser la tête sur mes petits codes ^^

Encore Merci,

Esee
Messages postés
50
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
29 janvier 2010

Pas d'soucis,
Regarde le bouqin tu va voir c'est super bien expliqué et si tu prends le temps de comprendre c'est pas si compliqué que ça.
Il faut avoir l'ésprit logique, enfin il faut se dire dans la tête, avec des vrais mots, "qu'est-ce que je veux faire", "si je fais ca ca fera ca sinon ca fera ca" (if else ... etc)

enfin le plus dur c'est de se rappeler du "champ lexical", mais pour t'aider la de dedans tu as google et les forums comme ici, l'aide de flash (F1) > dès que tu veux savoir à quoi sert une commande ,tu la tapes dans flash tu la surligne avec la souris et hop F1 > l'aide s'ouvre et te la détaille.
Et pour fini le bouquin dont j'tai parlé, qui est très bien fait.

Voilou, bon courage à toi, hésites pas à poser tes questions dans les forums, à chercher , on y arrive toujours au bout d'un moment

Mais oublie pas de prendre l'air de temps en temps (là j'dis ça un peu pour moi aussi )
A bientôt et bon courage
seb