Problème de migration vers AS3 [Résolu]

Messages postés
6
Date d'inscription
mardi 25 octobre 2005
Statut
Membre
Dernière intervention
15 novembre 2010
- - Dernière réponse : cs_cdedecmoi
Messages postés
6
Date d'inscription
mardi 25 octobre 2005
Statut
Membre
Dernière intervention
15 novembre 2010
- 15 nov. 2010 à 18:41
Bonjours ! Je reviens aujourd'hui pour un nouveau problème...
Ayant mon animation qui marcher bien, une erreur a bien évidemment voulu se glisser dans mon flash, donc enfaite j'ai migrer vers AS3 pour je ne sais quel raison, mais maitenant, l'action script doit donc changer, mais après correction des erreurs...Mon animation ne marche plus... Pouvais vous m'éclairer s'il vous plait ?
Merci d'avance a tous ceux qui essayeront de m'aider !
On parle donc d'un carrousel a 5 images
Mon Code avant :

//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=200;

//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=5;

//Attachement des icones
var i:Number;
for(i=0;i<N;i++)
{
//Attache le ieme clip a la scene
root.attachMovie('MonClip'+i,'ID'+i,i);

//click
root['ID'+i].onPress=function(){trace('salut');}


//position initial du ieme clip en y (milieu de scene)
root['ID'+i]._y=450/2;

}

//rotation des clips
 var angle:Number=0;
_root.onEnterFrame=function(){
 
 //si l'angle a fait un tour alors remise a zero de l'angle
 if (angle>2*Math.PI)
 {
 angle=0;
 }
 else
 {			 
 	for(i=0;i<N;i++)
 	{

//rotation du i_eme clip sur x
_root['ID'+i]._x=Rx*Math.cos(angle+2*Math.PI*i/N)+610/2;

//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
_root['ID'+i]._xscale=45/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+40;
_root['ID'+i]._yscale=_root['ID'+i]._xscale;

         _root['ID'+i]._alpha=100/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+50;

//mise a jour de z (profondeur en pixels);
_root['ID'+i].swapDepths(Rx*Math.sin(angle+2*Math.PI*i/N));
 	}

//rotation normale sans souris
//0.1 correspond a la vitesse (-0.1 selon le sens)
//angle=angle+0.1;

//rotation commandée par la souris
//conditions sur x

//0.7 correspond a la vitesse
angle=angle+0.025;

 }
 }


Il m'indique des erreurs avec _root, j'enlève donc le underscore, sa marche =D, ensuite je traite le problème de migration avec onenterframe, donc voici mon code final :

//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=200;

//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=5;

//Attachement des icones
var i:Number;
for(i=0;i<N;i++)
{
//Attache le ieme clip a la scene
root.attachMovie('MonClip'+i,'ID'+i,i);

//click
root['ID'+i].onPress=function(){trace('salut');}


//position initial du ieme clip en y (milieu de scene)
root['ID'+i]._y=450/2;

}

//rotation des clips
 var angle:Number=0;
 addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
    // Ton code ici
 
 //si l'angle a fait un tour alors remise a zero de l'angle
 if (angle>2*Math.PI)
 {
 angle=0;
 }
 else
 {			 
 	for(i=0;i<N;i++)
 	{

//rotation du i_eme clip sur x
root['ID'+i]._x=Rx*Math.cos(angle+2*Math.PI*i/N)+610/2;

//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
root['ID'+i]._xscale=45/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+40;
root['ID'+i]._yscale=root['ID'+i]._xscale;

         root['ID'+i]._alpha=100/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+50;

//mise a jour de z (profondeur en pixels);
root['ID'+i].swapDepths(Rx*Math.sin(angle+2*Math.PI*i/N));
 	}

//rotation normale sans souris
//0.1 correspond a la vitesse (-0.1 selon le sens)
//angle=angle+0.1;

//rotation commandée par la souris
//conditions sur x

//0.7 correspond a la vitesse
angle=angle+0.025;

 }
 }

Plus aucune erreur =D
Mais plus aucune animation...
Un petit coup de pouce s'il vous plaît
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6
3
Merci
en fait, il n'existe pas vraiment de "migration" entre as2 et as3, il faut souvent réécrire entièrement le code.
si je te dis que "onPress" et "attachMovie" n'existent plus et n'ont pas été remplacés, mais complètement transformés dans une autre méthode, ça t'aide ?

Sans parler du fait que flash 10 propose directement des choses en 3D pour ce que tu sembles vouloir faire.

Peg'

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de pegase31
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
0
Merci
Hello,

si ton fichier est bien en as3 ça ne marchera effectivement pas : en as3 les "_" n'ont plus lieu d'être pour tous les paramètres tels que "_x", "_y", "_xscale", et "_yscale", par conséquent il faut écrire à la place :
"x", "y", "xscale", et "yscale"... Mais à vérifier tout de même quand à la syntaxe car je code en as2 donc je ne suis pas formel.

A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
Commenter la réponse de BBFUNK01
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6
0
Merci
il s'agit de "x", "y" et de "scaleX" et "scaleY" plus précisément.
Il y a un chapitre sur la migration as2=>as3 dans la doc live d'as3.

Peg'
Commenter la réponse de pegase31
Messages postés
6
Date d'inscription
mardi 25 octobre 2005
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
Merci de vos aides =D
Mais mon problème persiste :s j'ai donc désormais ce code ci :
//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=200;

//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=5;

//Attachement des icones
var i:Number;
for(i=0;i<N;i++)
{
//Attache le ieme clip a la scene
root.attachMovie('MonClip'+i,'ID'+i,i);

//click
root['ID'+i].onPress=function(){trace('salut');}


//position initial du ieme clip en y (milieu de scene)
root['ID'+i].y=450/2;

}

//rotation des clips
 var angle:Number=0;
 addEventListener(Event.ENTER_FRAME, enterFrame);
function enterFrame(e:Event):void
{
    // Ton code ici
 
 //si l'angle a fait un tour alors remise a zero de l'angle
 if (angle>2*Math.PI)
 {
 angle=0;
 }
 else
 {			 
 	for(i=0;i<N;i++)
 	{

//rotation du i_eme clip sur x
root['ID'+i].x=Rx*Math.cos(angle+2*Math.PI*i/N)+610/2;

//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
root['ID'+i].xscale=45/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+40;
root['ID'+i].yscale=root['ID'+i].xscale;

         root['ID'+i].alpha=100/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+50;

//mise a jour de z (profondeur en pixels);
root['ID'+i].swapDepths(Rx*Math.sin(angle+2*Math.PI*i/N));
 	}

//rotation normale sans souris
//0.1 correspond a la vitesse (-0.1 selon le sens)
//angle=angle+0.1;

//rotation commandée par la souris
//conditions sur x

//0.7 correspond a la vitesse
angle=angle+0.025;

 }
 }
Commenter la réponse de cs_cdedecmoi
Messages postés
6
Date d'inscription
mardi 25 octobre 2005
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
Bon...Je vais voir pour changer et rester en AS2 alors, parce que sa m'embête vraiment de m'être casser la tête pour rien surtout pour recommencer...Merci beaucoup quand même !
Commenter la réponse de cs_cdedecmoi