verarl
Messages postés
21
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
12 avril 2010
26 janv. 2010 à 21:37
Bonsoir,
Tout d'abord, je demanderai aux administrateurs de bien vouloir m'excuser pour la longueur de mon message.
Je pense que mes explications étaient trop fragmentaires ,et de ce fait, qu'il était impossible de m'aider, c'est pourquoi je vous livre avec beaucoup de gêne, l'ensemble de mon code.
Je me permets pour ma défense, de vous rappelez que je suis totalement débutant en AS3 et que j'essaie d'adapter des notions apprises dans les livres à mon ptojet, un projection sur la nature.
Pour l'instant les rubriques les pages et l'affichage des vignettes fonctionnent. Mais je n'arrive pas à afficher les images en grands depuis les vignettes. J'ai mis deux indications trace, la première fonctionne la seconde renvoie null.
Je peux vous donner des explications supplémentaires
/*
# Association Mycologique de Baume-les-Dames
# 25110 Baume-les-Dames
# Soirée de février 2010
# Séjour à Pralognan.
# Eté 2009
#
*/
// Creer rectangle de type MovieClip
function creerUneForme(num:uint, nx:Number, ny:Number, nl:Number, nh:Number, nc:uint, na:Number):MovieClip {
var tmp = new MovieClip();
tmp.x = nx;
tmp.y =ny;
tmp.graphics.beginFill(nc);
tmp.graphics.drawRect(0, 0, nl, nh);
tmp.graphics.endFill();
tmp.alpha = na;
tmp.numero = num;
return tmp;
}
// variables utiles
function initialiserUneForme(forme:MovieClip, nx:Number, ny:Number, nl:Number, nh:Number):void {
forme.x = nx;
forme.y = ny;
forme.width = nl;
forme.height = nh;
forme.alpha = 0;
forme.visible = true;
}
// Ctréer un texte vertical en Arial
function creerTexteVertical(nt:String, nx:Number, ny:Number, nc:uint, taille:uint):Sprite {
var format:TextFormat = new TextFormat("Arial", 36);
format.color=nc;
format.align = TextFormatAlign.CENTER;
format.leading = -8;
var tmp = new TextField();
tmp.defaultTextFormat = format;
tmp.selectable = false;
tmp.height = tmp.textHeight;
tmp.autoSize = TextFieldAutoSize.CENTER;
tmp.embedFonts = true;
var leTexte:Array =new Array();
for (var i:Number=0; i < nt.length; i++) {
leTexte[i] = nt.charAt(i);
}
var textVertical :String = leTexte.join("\n");
tmp.text = textVertical;
tmp.x = nx;
tmp.y = ny;
tmp.filters = [new DropShadowFilter(0, 45,0X000000,1,5,5,1.64,3)];
var boite:Sprite = new Sprite();
var fond:Sprite = new Sprite();
fond.graphics.beginFill(0xFFFFFF);
fond.graphics.drawRect(0, 0, tmp.textWidth-100,tmp.textHeight);
fond.graphics.endFill();
fond.x = nx ;
fond.y = ny;
fond.alpha=0;
addChild(fond);
boite.addChild(tmp);
boite.addChild(fond);
return boite;
}
// Mise en place des vignettes
function positionneVignette(type,nelt:Number,nx:Number, ny:Number):Sprite {
var tmp = new Sprite();
var ecartInterPhoto:uint = 5;
var compteurPhoto:uint=0;
var laVignette:PhotoClp;
var aCharger:Loader;
var posX:uint = 0;
var posY:uint = 0;
for (var i:uint = 0; i< nelt; i++) {
aCharger = new Loader() ;
laVignette = new PhotoClp();
aCharger.load(new URLRequest("../"+type+"/"+"vignette"+i+".jpg"));
laVignette.scaleX = 0.02;
laVignette.scaleY = 0.02;
laVignette.x =(laVignette.width + ecartInterPhoto)*posX + (nx-10);
laVignette.y = (laVignette.height + ecartInterPhoto)*posY + (ny-20);
laVignette.type = type;
trace(type);
laVignette.addChild(aCharger);
posY++;
if (laVignette.y > hauteurPage+70) {
posY=0;
posX++;
}
laVignette.addChild(aCharger);
tmp.addChildAt(laVignette,0);
tmp.addChildAt(laVignette,0);
laVignette.addEventListener(MouseEvent.MOUSE_DOWN, surDown);
laVignette.addEventListener(MouseEvent.MOUSE_UP, surUp);
laVignette.addEventListener(MouseEvent.MOUSE_OVER, surOver);
laVignette.addEventListener(MouseEvent.MOUSE_OUT, surOut);
}
return tmp;
}
// Chargement des grosses photos (non testé)
function chargerPhoto(url:String,nx:Number,ny:Number, fx:Number,fy:Number):void {
if (grandFormat != null) {
removeChild(grandFormat);
}
var aCharger:Loader=new Loader;
aCharger.load(new URLRequest(url));
grandFormat=new MovieClip() ;
grandFormat.addChild(aCharger);
grandFormat.x=nx - 32 ;
grandFormat.y=ny - 47;
grandFormat.scaleX=0.3;
grandFormat.scaleY=0.3;
grandFormat.finalY=fy;
grandFormat.finalX=fx;
grandFormat.alpha=0;
addChild(grandFormat);
grandFormat.addEventListener(Event.ENTER_FRAME,seDeplacerVers);
}
// Effacement du conteneur
function effacer(cible:Sprite):Sprite {
if (cible != null) {
removeChild(cible);
}
return null;
}
// éléments généraux au programme
// variables
var largeurScene:uint = stage.stageWidth;
var hauteurScene:uint = stage.stageHeight;
var ecartDuBord:uint = 100;
var bande:uint = stage.stageHeight/5;
var i:uint;
var type: String;
var grandFormat:MovieClip;
// titre
var titreSite:TitreClp = new TitreClp();
titreSite.x = 20;
titreSite.y =100 ;
addChild(titreSite);
titreSite.addEventListener(MouseEvent.MOUSE_OVER, surOver);
titreSite.addEventListener(MouseEvent.MOUSE_OUT, surOut);
titreSite.addEventListener(MouseEvent.MOUSE_UP, clicSurTitre);
// tableaux
var listeCouleurs:Array = [ 0x016087, 0x660066, 0xCC0033, 0xFF9900];
var listeNoms:Array = [ "Annecy", "Pralognan", "Papillons", "Fleurs"];
var nbElt:Array = [1, 1, 1, 1];
var listeRubriques:Array = new Array(4);
var listePages:Array = new Array(4);
var listeMinis:Array = new Array(4);
var listeTitreRubrique:Array = new Array(4);
var titrePage:Sprite;
var boiteAvignettes :Sprite;
// Création des pages
var largeurPage:uint = largeurScene;
var hauteurPage:uint = hauteurScene - bande;
var finalXPage:uint = 0;
var finalYPage:uint = bande;
for (i = 0; i < listePages.length; i++) {
listePages[i] = new MovieClip();
listePages[i] = creerUneForme(i, largeurScene/2, hauteurScene/2, largeurPage/100, hauteurPage/100, listeCouleurs[i], 0);
addChild(listePages[i]);
listePages[i].addEventListener(Event.COMPLETE,afficherLesMinis);
}
// Création des rubriques
var largeurRubrique:uint = largeurScene/4;
var hauteurRubrique:uint = hauteurScene - bande;
for (i = 0; i < listeRubriques.length; i++) {
listeRubriques[i] = new MovieClip();
var posX:Number = Math.random()*(largeurScene+ 2*largeurRubrique) - largeurRubrique;
var posY:Number = Math.random()*(hauteurScene + 2*hauteurRubrique) - hauteurRubrique;
listeRubriques[i] = creerUneForme(i,posX, posY, largeurRubrique, hauteurRubrique, listeCouleurs[i], 0);
addChild(listeRubriques[i]);
// Création du titre
listeTitreRubrique[i] = creerTexteVertical(listeNoms[i], largeurRubrique -50, 20, listeCouleurs[i],55);
listeRubriques[i].addChild(listeTitreRubrique[i]);
listeRubriques[i].addEventListener(Event.ENTER_FRAME, seDeplacerVers);
}
// Création des minis rubriques
var largeurMini:uint = 20;
var hauteurMini:uint = 35;
var finalYMini:uint = 75;
var finalXMini:uint = largeurScene - ecartDuBord;
for (i = 0; i < listeMinis.length; i++) {
listeMinis[i] = new MovieClip();
listeMinis[i] = creerUneForme(i, i*largeurMini +finalXMini, finalYMini, largeurMini, hauteurMini, listeCouleurs[i],1);
listeMinis[i].visible = false;
addChild(listeMinis[i]);
listeMinis[i].addEventListener(MouseEvent.MOUSE_OVER, surOver);
listeMinis[i].addEventListener(MouseEvent.MOUSE_OUT, surOut);
listeMinis[i].addEventListener(MouseEvent.MOUSE_UP, clicSurRubrique);
}
// Action souris
function surOver(e:MouseEvent):void {
var cible:Sprite = e.currentTarget as Sprite;
cible.alpha = 0.4;
cible.buttonMode = true;
}
function surOut(e:MouseEvent):void {
var cible:Sprite = e.currentTarget as Sprite;
cible.alpha = 1;
}
function surDown(e:MouseEvent):void {
var cible:MovieClip=e.currentTarget as MovieClip;
cible.x++;
cible.y++;
}
function surUp(e:MouseEvent):void {
var cible:MovieClip=e.currentTarget as MovieClip;
cible.x--;
cible.y--;
var url:String;
trace(type)
switch (type) {
case "Annecy" :
// Si c'est une photo, la charger en la déplaçant depuis la position courante de la souris jusqu'à la partie droite de la page
url="../" + type + "/" + type + cible.numero + ".jpg";
chargerPhoto(url,parent.mouseX ,parent.mouseY ,largeurPage / 2 , finalYPage );
break;
case "Pralognan" :
url="../" + type + "/" + type + cible.numero + ".jpg";
chargerPhoto(url,parent.mouseX ,parent.mouseY ,largeurPage / 2 , finalYPage );
break;
case "Papillons" :
// Si c'est une vidéo, la charger en la déplaçant depuis la position courante de la souris jusqu'à la partie droite de la page
url="../" + type + "/" + type + cible.numero + ".jpg";
chargerPhoto(url,parent.mouseX ,parent.mouseY ,largeurPage / 2 , finalYPage );
break;
case "Fleurs" :
// Si c'est une vidéo, la charger en la déplaçant depuis la position courante de la souris jusqu'à la partie droite de la page
url="../" + type + "/" + type + cible.numero + ".jpg";
chargerPhoto(url,parent.mouseX ,parent.mouseY ,largeurPage / 2 , finalYPage );
break;
}
}
// Retour à l'aspect initial
function clicSurTitre(e:MouseEvent):void {
boiteAvignettes = effacer(boiteAvignettes );
titrePage = effacer(titrePage);
// Placement des rubriques
for (var i:uint = 0; i < listeRubriques.length; i++) {
listeRubriques[i].visible = true;
var posX:Number = Math.random()*(largeurScene+ 2*largeurRubrique) - largeurRubrique;
var posY:Number = Math.random()*(hauteurScene + 2*hauteurRubrique) - hauteurRubrique;
initialiserUneForme(listeRubriques[i], posX,posY,largeurRubrique,hauteurRubrique);
listeRubriques[i].removeEventListener(MouseEvent.MOUSE_OVER, surOver);
listeRubriques[i].removeEventListener(MouseEvent.MOUSE_OUT, surOut);
listeRubriques[i].removeEventListener(MouseEvent.MOUSE_UP, clicSurRubrique);
listeRubriques[i].addEventListener(Event.ENTER_FRAME, seDeplacerVers);
// Initialisation des pages
initialiserUneForme(listePages[i], largeurScene/2,hauteurScene/2,largeurPage/100,hauteurPage/100);
// Effacement des minis rubriques
listeMinis[i].visible = false;
}
}
// Réaffichage des rubriques
function clicSurRubrique(e:MouseEvent):void {
var cible:MovieClip = e.currentTarget as MovieClip;
//Les vignettes sont effacées
boiteAvignettes = effacer(boiteAvignettes );
// Titre de page effacé
titrePage= effacer(titrePage);
// Les pages sont centrées et mises à l'échelle
for (var i:uint = 0; i < listeRubriques.length; i++) {
// Les rubriques deviennent invisibles
listeRubriques[i].visible = false;
// Réinitialiser les pages
initialiserUneForme(listePages[i], largeurScene/2,hauteurScene/2,largeurPage/100,hauteurPage/100);
}
listePages[cible.numero].addEventListener(Event.ENTER_FRAME, agrandirPageEnX);
}
// Fonctions d'affichage des éléments graphiques
function seDeplacerVers(e:Event):void {
var cible:MovieClip = e.currentTarget as MovieClip;
var positionCouranteX, positionCouranteY;
var ecartX, ecartY;
var deplacementX, deplacementY;
positionCouranteX = cible.x;
positionCouranteY = cible.y;
ecartX = cible.numero*largeurRubrique - positionCouranteX;
deplacementX= ecartX / 6;
cible.x= positionCouranteX + deplacementX;
ecartY = finalYPage - positionCouranteY;
deplacementY= ecartY / 6;
cible.y= positionCouranteY + deplacementY;
cible.alpha+=0.02;
if (Math.abs(deplacementY ) < 0.4 && Math.abs(deplacementX) < 0.4) {
cible.addEventListener(MouseEvent.MOUSE_OVER, surOver);
cible.addEventListener(MouseEvent.MOUSE_OUT, surOut);
cible.addEventListener(MouseEvent.MOUSE_UP, clicSurRubrique);
cible.alpha=1;
cible.x = cible.numero*largeurRubrique ;
cible.y =finalYPage;
cible.removeEventListener(Event.ENTER_FRAME, seDeplacerVers);
}
}
function agrandirPageEnX(e:Event):void {
var cible:MovieClip = e.currentTarget as MovieClip;
var ecartX:Number;
var positionCouranteX:Number;
var deplacementX:Number;
positionCouranteX = cible. x;
ecartX = finalXPage - positionCouranteX;
deplacementX= ecartX / 6;
cible.x= positionCouranteX + deplacementX;
cible.width+=40;
cible.alpha+=0.05;
if (Math.abs(deplacementX) < 0.4) {
cible.removeEventListener(Event.ENTER_FRAME, agrandirPageEnX);
cible.addEventListener(Event.ENTER_FRAME, agrandirPageEnY);
cible.alpha = 1;
cible.width=largeurPage;
}
}
function agrandirPageEnY(e:Event):void {
var cible:MovieClip = e.currentTarget as MovieClip;
var ecartY:Number;
var positionCouranteY:Number;
var deplacementY:Number;
cible.height+=25;
positionCouranteY = cible. y;
ecartY = finalYPage - positionCouranteY;
deplacementY= ecartY / 6;
cible.y= positionCouranteY + deplacementY;
if (Math.abs(deplacementY) < 0.4) {
cible.removeEventListener(Event.ENTER_FRAME, agrandirPageEnY);
cible.height = hauteurPage;
cible.x =finalXPage;
cible.y =finalYPage;
cible.alpha = 15;
// --------------------------------------- Le titre d'une page est créé par la fonction creerTexteVertical() ----------------------------
titrePage=creerTexteVertical(listeNoms[cible.numero], largeurPage-80, finalYPage+10, listeCouleurs[cible.numero],70);
addChild(titrePage);
// -------------------------------------- Les vignettes sont placées sur la page
boiteAvignettes = positionneVignette(listeNoms[cible.numero],nbElt [cible.numero],30, finalYPage+30);
addChild(boiteAvignettes );
cible.dispatchEvent(new Event(Event.COMPLETE));
}
}
// affichage des minis rubriques
function afficherLesMinis(e:Event):void {
var cible:MovieClip = e.currentTarget as MovieClip;
for (var i:uint = 0; i < listeMinis.length; i++) {
listeMinis[i].visible = true;
}
listeMinis[cible.numero].visible = false;
}