AS1 à AS2

cs_aryade
Messages postés
4
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
7 mai 2009
- 7 mai 2009 à 18:10
cs_aryade
Messages postés
4
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
7 mai 2009
- 7 mai 2009 à 21:33
Bonjour,

J'ai réalisé une animation en as1 où une ligne se trace en suivant la souris. Elle fonctionne très bien, cependant aujourd'hui, j'ai besoin de la "traduire" en as2 et ne m'en sort pas ! Merci d'avance ;)

Sur la scène principale ce code :

startDrag("/tracker", true);
Counter = 0;
NumberObjects = getProperty("/Line", _totalframes);
/:OldX = getProperty("/Line", _x);
/:OldY = getProperty("/Line", _y);

setProperty("/Line", _visible, "0");
tellTarget ("/Line") {
    stop();
}

3 clips :
- Line (un clip avec ma ligne, en ht à gche de ma scène)
- tracker(un clip vide, en bas à gche de ma scène)
- control (en bas à dte de ma scène)

>>Dans le clip control : 2 images clés avec les codes suivant :
1ère image clè :

if (Number(/:Counter)<Number(/:NumberObjects)) {
    /:Counter = Number(/:Counter)+1;
} else {
    /:Counter = 1;
}
Line = "NewLine" + /:Counter;
duplicateMovieClip("/Line", Line, /:Counter);
Line = "/" + Line;
NewX = getProperty("/tracker", _x);
NewY = getProperty("/tracker", _y);
setProperty(Line, _x, /:OldX);
setProperty(Line, _y, /:OldY);
setProperty(Line, _xscale, NewX-/:OldX);
setProperty(Line, _yscale, NewY-/:OldY);
/:OldX = NewX;
/:OldY = NewY;

2ème image clè :
gotoAndPlay(1);

4 réponses

pegase31
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
11
7 mai 2009 à 18:39
Bonsoir,

Alors 3 règles à savoir dans ton cas :
- target setProperty(valeur, property);  donne> target.property = valeur- variable getProperty(target, property);  donne> variable = target.property
- tellTarget (target) { méthode }; donne => target.méthode

Ensuite :
"/:" variable et "/" objet

Avec tout ça, j'en conclue que ton code actuel est déjà un bâtardage de as1/2 et que ça ressemble à un Hybride Flash 4/5 pas encore assimilé.
Je ne sais pas où tu as eut ton code, mais le passage à l'as3 serait un bond en avant de 9 ans (environ).

Bon courage pour ton auto-traduction !

Peg'
0
cs_aryade
Messages postés
4
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
7 mai 2009

7 mai 2009 à 19:21
Merci beaucoup Peg', je comprend un peu mieux déjà.

Alors, j'ai essayé d'auto-traduire mon hybride à l'aide de tes conseils; je ne sais pas si je suis sur la bonne voie (ça ne fonctionne tjs pas), voici ce que j'ai (est-ce que "Line" doit être entre guillemets ou avec un underscore avant ??) :

Sur la scène principale ce code :

startDrag(tracker, true);
var Counter = 0;
var NumberObjects = Line._totalframes;
var OldX = Line._x;
var OldY = Line._y;

Line._visible = "0";
Line.stop();

>>Dans le clip control : 2 images clés avec les codes suivant :
1ère image clè :

if (Number(Counter)<Number(NumberObjects)) {
    Counter = Number(Counter)+1;
} else {
    Counter = 1;
}
Line = "NewLine" + Counter;
duplicateMovieClip(Line, Line, Counter);
Line = "/" + Line;
NewX = tracker._x;
NewY = tracker._y;
Line._x = OldX;
Line._y = OldY;
Line._xscale = NewX-OldX;
Line._yscale = NewY-OldY;
OldX = NewX;
OldY = NewY;

2ème image clè :

gotoAndPlay(1);
0
pegase31
Messages postés
6138
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
11
7 mai 2009 à 19:40
Déjà, si tu regardes la propriété "_visible" d'un objet, tu verras que c'est un booléen, soit true, soit false, et non un string ("0"). Ensuite c'est une propriété d'objet graphique, donc pas d'une variable ...

Ensuite, de mémoire, cette partie crée un nouveau clip et le duplique :

Line = "NewLine" + /:Counter;
duplicateMovieClip("/Line", Line, /:Counter);
Line = "/" + Line;

Or, la syntaxe est complètement changée.

Line = clip dont le nom est "NewLine"+valeur de Counter
Duplique le clip appelé "Line" en un nouveau clip appelle "Line" au niveau Counter
Line = Clip Line

Cette partie dépend du contenu graphique de ton animation ... et donc pas possible à traduire comme ça ...

Peg'
0
cs_aryade
Messages postés
4
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
7 mai 2009

7 mai 2009 à 21:33
Merci, j'ai l'impression d'avancer grâce à toi.
Je l'ai retouché un peu (ça ne fonctionne tjs pas). Quand tu dis "et donc pas possible à traduire comme ça"; tu veux dire sans voir l'anim (en fait le clip Line; c'est un clip composé de 2 petits clips identiques qui sont des traits avec une interpolation qui les courbe) ou que ce n'est pas la bonne mèthode au niveau du code ?
Je commente le code.

Sur la scène principale ce code :

startDrag(tracker, true);
var Counter = 0;
var NumberObjects = Line._totalframes; // je ne comprend pas ça; est-ce qu'il tourne en boucle (avec le "gotoAndPlay(1)") et le totalframes équivaut au temps ?
var OldX = Line._x;
var OldY = Line._y;

Line._visible = false;
Line.stop();

// en fait ici on ne parle que de la ligne qui existe déjà ?

>>Dans le clip control : 2 images clés avec les codes suivant :
1ère image clè :

if (Number(Counter)<Number(NumberObjects)) {
    Counter = Number(Counter)+1;
} else {
    Counter = 1;
}
Line = "NewLine" + Counter;
duplicateMovieClip(Line, NewLine, Counter); // en fait est-ce que ces deux lignes ne devraient pas en faire une seule ??

NewX = tracker._x;
NewY = tracker._y;
Line._x = OldX;
Line._y = OldY;
Line._xscale = NewX-OldX;
Line._yscale = NewY-OldY;
OldX = NewX;OldY NewY; // est-ce que je ne devrait pas mettre "var NewY OldY" et  "var NewX = OldX" ??

2ème image clè :
gotoAndPlay(1);
0