Carroussel
jawherb
Messages postés
18
Statut
Membre
-
jawherb Messages postés 18 Statut Membre -
jawherb Messages postés 18 Statut Membre -
Bonjour,
je suis entrain de realiser une animation avec flash CS3 en utilisant le actionscript3
le problème se trouve dans le script qui permet de realiser une CARROUSSEL-3D
le script que j'ai l'utilisé est le suivant:
//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=120;
//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=10;
//angle de rotation des clips autour de l'axe z
var angle:Number=0;
//Attachement des icones
var Reference:Class;
for(var i:Number=0;i<N;i++)
{
// extraction des références de classe
Reference = Class (getDefinitionByName ( "MonClip"+i ));
// ajout à la liste d'affichage
this.addChild ( DisplayObject ( new Reference() ) );
//Nom du clip
this.getChildAt(i).name='ID'+i;
//position initial du ieme clip en y (position helice)
//64=taille de l'icone, 64/2=distance du bord au centre de l'icone (icone carré ou cercle)
//2*3= marge de 3 pixels en haut et en bas de l'image
//la place totale en y prise par les icones = (stage.stageWidth-2*3)
//la premiere icone (son centre) se place apres la marge 3+64/2
//d'ou la repartion des icones sur y :
this.getChildAt(i).y=(stage.stageHeight-2*3-64/2)*i/N+3+64/2;
//Position initial du ieme clip en x
this.getChildAt(i).x=Rx*Math.cos(2*Math.PI*i/N)+stage.stageWidth/2;
//taille initiale du ieme clip
this.getChildAt(i).scaleX=0.6/2*(Math.sin(2*Math.PI*i/N)+ 1)+0.4;
this.getChildAt(i).scaleY=this.getChildAt(i).scaleX;
//ajout d'un ecouteur sur le ieme clip
this.getChildAt(i).addEventListener(MouseEvent.CLICK, OnClick);
}
//Fonction de click sur les icones
function OnClick ( pEvt:MouseEvent ):void
{
trace("salut");
}
//ecouteur enter_frame
stage.addEventListener ( Event.ENTER_FRAME, Main );
function Main ( pEvt:Event ):void
{
//variable temporaire pour la profondeur
var z:Number;
for(i=0;i<N;i++)
{
//rotation du i_eme clip sur x
this.getChildByName('ID'+i).x=Rx*Math.cos(angle+2*Math.PI*i/N)+stage.stageWidth/2;
//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
this.getChildByName('ID'+i).scaleX=0.6/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+0.4;
this.getChildByName('ID'+i).scaleY=getChildByName('ID'+i).scaleX;
//mise a jour de z (profondeur);
z=(N-1)*(Math.sin(angle+2*Math.PI*i/N)+1)/2;
this.setChildIndex(this.getChildByName('ID'+i), int(z));
}
//rotation commandée par la souris en y
//signe moins : rotation inversé
//Math.PI/2 = correction d'angle pour que l'icone pointée soit toujours au milieu
angle=(2*Math.PI)*(-stage.mouseY+3+64/2)/(stage.stageHeight-(3+64/2))+Math.PI/2;
}
lorsque je teste l'animation le panneau de sortie affiche le message suivant:
"ReferenceError: Error #1065: La variable MonClip0 n'est pas définie.
at global/flash.utils::getDefinitionByName()
at Sansnom_fla::MainTimeline/Sansnom_fla::frame1()"
sachant que tout les clips existe dans la biblitheque et qui portent les noms suivant:
MonClip0,MonClip1,MonClip2,MonClip3,MonClip4,MonClip5,MonClip5,MonClip6,MonClip7,MonClip8,MonClip9
SVP j'ai besoin de votre aide pour trouver la solution.
merci d'avence.
je suis entrain de realiser une animation avec flash CS3 en utilisant le actionscript3
le problème se trouve dans le script qui permet de realiser une CARROUSSEL-3D
le script que j'ai l'utilisé est le suivant:
//Rayon de rotation (en pixels) autour de l'axe y
var Rx:Number=120;
//Nombre d'icones (pas plus que 10, quoique...)
var N:Number=10;
//angle de rotation des clips autour de l'axe z
var angle:Number=0;
//Attachement des icones
var Reference:Class;
for(var i:Number=0;i<N;i++)
{
// extraction des références de classe
Reference = Class (getDefinitionByName ( "MonClip"+i ));
// ajout à la liste d'affichage
this.addChild ( DisplayObject ( new Reference() ) );
//Nom du clip
this.getChildAt(i).name='ID'+i;
//position initial du ieme clip en y (position helice)
//64=taille de l'icone, 64/2=distance du bord au centre de l'icone (icone carré ou cercle)
//2*3= marge de 3 pixels en haut et en bas de l'image
//la place totale en y prise par les icones = (stage.stageWidth-2*3)
//la premiere icone (son centre) se place apres la marge 3+64/2
//d'ou la repartion des icones sur y :
this.getChildAt(i).y=(stage.stageHeight-2*3-64/2)*i/N+3+64/2;
//Position initial du ieme clip en x
this.getChildAt(i).x=Rx*Math.cos(2*Math.PI*i/N)+stage.stageWidth/2;
//taille initiale du ieme clip
this.getChildAt(i).scaleX=0.6/2*(Math.sin(2*Math.PI*i/N)+ 1)+0.4;
this.getChildAt(i).scaleY=this.getChildAt(i).scaleX;
//ajout d'un ecouteur sur le ieme clip
this.getChildAt(i).addEventListener(MouseEvent.CLICK, OnClick);
}
//Fonction de click sur les icones
function OnClick ( pEvt:MouseEvent ):void
{
trace("salut");
}
//ecouteur enter_frame
stage.addEventListener ( Event.ENTER_FRAME, Main );
function Main ( pEvt:Event ):void
{
//variable temporaire pour la profondeur
var z:Number;
for(i=0;i<N;i++)
{
//rotation du i_eme clip sur x
this.getChildByName('ID'+i).x=Rx*Math.cos(angle+2*Math.PI*i/N)+stage.stageWidth/2;
//mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
this.getChildByName('ID'+i).scaleX=0.6/2*(Math.sin(angle+2*Math.PI*i/N)+ 1)+0.4;
this.getChildByName('ID'+i).scaleY=getChildByName('ID'+i).scaleX;
//mise a jour de z (profondeur);
z=(N-1)*(Math.sin(angle+2*Math.PI*i/N)+1)/2;
this.setChildIndex(this.getChildByName('ID'+i), int(z));
}
//rotation commandée par la souris en y
//signe moins : rotation inversé
//Math.PI/2 = correction d'angle pour que l'icone pointée soit toujours au milieu
angle=(2*Math.PI)*(-stage.mouseY+3+64/2)/(stage.stageHeight-(3+64/2))+Math.PI/2;
}
lorsque je teste l'animation le panneau de sortie affiche le message suivant:
"ReferenceError: Error #1065: La variable MonClip0 n'est pas définie.
at global/flash.utils::getDefinitionByName()
at Sansnom_fla::MainTimeline/Sansnom_fla::frame1()"
sachant que tout les clips existe dans la biblitheque et qui portent les noms suivant:
MonClip0,MonClip1,MonClip2,MonClip3,MonClip4,MonClip5,MonClip5,MonClip6,MonClip7,MonClip8,MonClip9
SVP j'ai besoin de votre aide pour trouver la solution.
merci d'avence.