AS3+xml avec txt

kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014 - 27 janv. 2012 à 22:42
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014 - 9 févr. 2012 à 23:49
Bonsoir à tous !
j'essaie de faire diaporama : 2 boutons , une image et un import xml
A chaque fois que je clique sur mes bt ( suivant, précedent) l'image change avec son txt qui est lié dans le xml.


import com.greensock.*;
var racine=root.parent.root;

// Définition de la taille de la scène
var largeurScene:uint=stage.stageWidth;
var hauteurScene:uint=stage.stageHeight;

var cadrePhoto = new Loader();
var adressePhoto=new URLRequest("PHOTOS/phEolienne/grande/ph1.jpg");
cadrePhoto.load(adressePhoto);
addChild(cadrePhoto);
cadrePhoto.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee);




//Chargeur du fichier XML
var chargeurXML:URLLoader = new URLLoader ();
var adresseXML:URLRequest=new URLRequest("DosXML/paysage.xml");
chargeurXML.load(adresseXML);
chargeurXML.addEventListener(Event.COMPLETE, XMLCharge);



var tableauImage : XMLList;
var position : int;
var requete:URLRequest;
var numeroImage:Number=1;
var btPrecedente:BtGauche = new BtGauche();
var btSuivante:BtDroite = new BtDroite();

btPrecedente.x=178.4;
btPrecedente.y=246.7;
btPrecedente.alpha=0.5;
addChild(btPrecedente);

btSuivante.x=215.8;
btSuivante.y=368.1;
btSuivante.alpha=0.5;
addChild(btSuivante);


///////////////////////////////////////////////////////////////////// TXT

var alt:String;
var TxTxt:String;


var formatTitre:TextFormat=new TextFormat ;
formatTitre.color=0x999999;
formatTitre.size=17;
formatTitre.font='Brush Script Std';
formatTitre.align='left';

/*Style utilisé pour le txt N°photo */
var StyleNumero:TextFormat=new TextFormat ;
StyleNumero.color=0x999999;
StyleNumero.size=14;
StyleNumero.font='Brush Script Std';
StyleNumero.align='left';

/*Style utilisé pour StyleTexteTxt */
var StyleTexteTxt:TextFormat=new TextFormat ;
StyleTexteTxt.color=0x999999;
StyleTexteTxt.size=20;
StyleTexteTxt.font='Brush Script Std';
StyleTexteTxt.align='left';
var texteAlt:TextField = new TextField();
texteAlt.text=' ';
addChild(texteAlt);

var texteTxt:TextField = new TextField();
texteTxt.autoSize=TextFieldAutoSize.LEFT;
texteTxt.text=' ';
addChild(texteTxt);

//////////////////////////***************************************** BOUTONS

btSuivante.addEventListener(MouseEvent.MOUSE_DOWN,afficherSuivante);
btPrecedente.addEventListener(MouseEvent.MOUSE_DOWN,afficherPrecedente);

btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,overBt);
btPrecedente.addEventListener(MouseEvent.MOUSE_OUT,outBt);

btSuivante.addEventListener(MouseEvent.MOUSE_OVER,overBt);
btSuivante.addEventListener(MouseEvent.MOUSE_OUT,outBt);

//================================================ OVER OUT=============

function overBt(e:MouseEvent):void {
var cible:Sprite=e.currentTarget as Sprite;
cible.alpha=0;
cible.buttonMode=true;
}
function outBt(e:MouseEvent):void {
var cible:Sprite=e.currentTarget as Sprite;
cible.alpha=0.5;
}
///////////////////////////////////////////////------------------------

function afficherSuivante(evt:MouseEvent) {
numeroImage=numeroImage+1;
if (numeroImage==11) {
numeroImage=1;
}
TweenMax.killChildTweensOf(this,true);
adressePhoto.url="PHOTOS/phEolienne/grande/ph"+numeroImage+".jpg";
cadrePhoto.load(adressePhoto);

adresseXML.url="DosXML/paysage.xml";
}

function afficherPrecedente(evt:Event) {
numeroImage=numeroImage-1;
if (numeroImage==0) {
numeroImage=10;
}
TweenMax.killChildTweensOf(this,true);
adressePhoto.url="PHOTOS/phEolienne/grande/ph"+numeroImage+".jpg";
cadrePhoto.load(adressePhoto);
}
///////////////////////////////////////////////////////////////////
function imageChargee(evt:Event) {
cadrePhoto.alpha=0;
TweenMax.to(cadrePhoto,1,{alpha:1});
cadrePhoto.x=500;
cadrePhoto.y=125;
}
////////////////////////////////////////////////////////////////////
function XMLCharge(evt:Event) {

var monXML:XML=new XML(evt.target.data);
tableauImage=monXML.image.@url;

var select:String;


texteAlt.text=monXML.image[1].attribute("alt");
texteAlt.setTextFormat(StyleNumero);
texteAlt.x=265;//position n°
texteAlt.y=454;
//On attache le Loader à la scene
this.addChild(cadrePhoto);

texteTxt.text=monXML.image[1].attribute("txt");
texteTxt.setTextFormat(StyleTexteTxt);
texteTxt.x=400;
texteTxt.y=690;
//On attache le Loader à la scene
this.addChild(cadrePhoto);
}

////////////////////////////////////////////////////////////////////////
dans le xml :
<?xml version="1.0" encoding="utf-8"?>







//////////////////////////////////////////////////////////
mes photos marchent bien mes mon incrémentation via XML NON
je sais c'est de la bidouille mais je débute et je picore un peu partout des bout de codes...
Si quelqu'un pouvait bien m'aider. MERCI

17 réponses

aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
31 janv. 2012 à 14:39
import com.greensock.*;//personnellement j'utilise les tweener qui sont bien plus performants

//______________________________ variables
var monXML:XML;//il faut déclarer ton xml en dehors de toute fonction pour qu'il soit accessible
var nmax:int;//nombre total d'image
var nb:int=0;//utiliser dans l'incrémentation
var numeroImage:int=0;//ici ton erreur (de débutant) est de ne pas savoir qu'un XML commence au rang "0"

//______________________________ initialisation
//alors c'est vraimment le bordel il y en a de partout, il faut ordonner ton code

var texteAlt:TextField=new TextField();
texteAlt.x=265; 
texteAlt.y=454;
//text.height=???? il plus que conseiller de le prciser sinon tu aura la valeur par défaut
//texteAlt.width=???? idem
var texteTxt:TextField=new TextField();
texteTxt.x=400; 
texteTxt.y=690;
//text.height=???? il plus que conseiller de le prciser sinon tu aura la valeur par défaut
//texteAlt.width=???? idem
texteAlt.selectable=texteTxt.selectable=false;//pense a préciser si "true" ou "false"
texteAlt.antiAliasType=texteTxt.antiAliasType="advanced";//a ne pas oublier
texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; 

var btPrecedente:BtGauche=new BtGauche();
btPrecedente.val=-1;//utiliser pour gérer "numeroImage"(marche si la classe de base de BtGauche est Movieclip, sinon d'autre moyen sont possible)
btPrecedente.x=178.4;
btPrecedente.y=246.7;
var btSuivante:BtDroite=new BtDroite();
btSuivante.val=1;//utiliser pour gérer "numeroImage" (idem)
btSuivante.x=215.8;
btSuivante.y=368.1;
btPrecedente.alpha=btSuivante.alpha=0.5;
btPrecedente.buttonMode=btSuivante.buttonMode=true;//c'est ici qu'il faut le placer et pas dans le mouseover

var Cadrephoto:Sprite=new Sprite();//on va faire un conteneur pour toute les photos
cadrePhoto.x=500;
cadrePhoto.y=125;
cadrePhoto.alpha=0;

//tu les inscrira dans l'ordre que tu souhaites pour l'affichage
addChild(texteAlt);
addChild(texteTxt);
addChild(btPrecedente);
addChild(btSuivante);
addChild(cadrePhoto);

var chargeurXML:URLLoader=new URLLoader(); 
chargeurXML.addEventListener(Event.COMPLETE,XMLCharge);//ajout de l'ecouteur avant de charger
chargeurXML.load(new URLRequest("DosXML/paysage.xml"));

//______________________________ event
private function XMLCharge(evt:Event):void{// ne pas oublier le "void" si la fonction ne renvoie rien
if(evt.target!=null){								
evt.target.removeEventListener(Event.COMPLETE,XMLCharge);// il ne faut pas oublier d'enlevef les ecouteur d'événement pour maitriser les ressources physiques
monXML=new XML(evt.target.data);
monXML.ignoreWhite=true;
acquerir();// on indique ici un chainage d'action a effectuer
}
}
private function imageChargee(evt:Event):void{// ne pas oublier le "void" si la fonction ne renvoie rien
evt.target.removeEventListener(Event.COMPLETE,imageChargee);// il ne faut pas oublier d'enlevef les ecouteur d'événement pour maitriser les ressources physiques
if(nb==0){animer(0);}//je place pas tout le code mais je fais appelle a une fonction qui est appeler lors des actions sur les boutons
nb++;
if(nb==nmax){
//une fois que tout est charger on ajoute les ecouteur sur les boutons et seulement le minimum pour une bonne gestion des ressources 
btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);
btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer); 
}
}
private function naviguer(evt:MouseEvent):void{
switch(evt.type){
case "mouseOver":
evt.currentTarget.alpha=0;
evt.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,naviguer);
break;
case "mouseOut":
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
evt.currentTarget.alpha=0.5;
break;
case "mouseDown" :
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
masquer(numeroImage);
var n:int=numeroImage+evt.currentTarget.val;
if(n<0){n=nmax-1;}else{if(n=nmax){n=0;}}
numeroImage=n;
animer(numeroImage);
break;
}
}

//______________________________ private
private function acquerir():void{
//de facon générale il est préférable de charger toute tes photos dès le debut au lieu de faire une requete http a chaque action sur le bouton
nmax=monXML.image.length();//on sort la déclaration de variable de la boucle pour ne pas les recalculer a chaque incrémentation
var photo:Loader;//ne pas oublier de typer
for(var i:int=0;i<nmax;i++){
photo=new Loader();
photo.name="p"+i;//on les nomme de facon a les cibler facilement
photo.visible=false;
cadrePhoto.addChild(photo);
photo.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee);//ajout de l'ecouteur avant de charger
photo.load(new URLRequest(monXML.image[i].@url));//l'url des image doit etre dans le xml sinon ce n'est pas du tout dynamique
}
}
private function formater(pCible:TextField,pSize:int):void{
//c'est un exemple pour montrer que l'on peut travailler uniquement sur ce qui est différent
var Style:TextFormat=new TextFormat();//attention oublie parenthèses
Style.color=0x999999; 
Style.size=pSize; 
Style.font="Brush Script Std"; 
Style.align="left";
pCible.setTextFormat(Style);
}
private function animer(pVal:int):void{
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=true;
texteAlt.text=monXML.image[pVal].@alt; 
formater(texteAlt,14); 
texteTxt.text=monXML.image[pVal].@txt; 
formater(texteTxt,20);
TweenMax.to(cadrePhoto,1,{alpha:1}); 
}
private function masquer(pVal:int):void{
TweenMax.killChildTweensOf(this,true);//pour les tweenMax je te laisse vérifier
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=false;
}
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
2 févr. 2012 à 23:46
Excuses- moi pour avoir tarder a te répondre Aerolyte.
Je te remercie d'avoir plancher sur mon problème ... Cependant je vais être chiante malgrès tes efforts et j'en suis pas fière mais j'aurais aimé ne pas utiliser de classe externe.(Pas de AS, PHP, Java...) Pratiquement touts les codes que l'on peut trouver sont avec des classes externes et étant donner que je débute, j'aurai aimé l'avoir dans le Fla uniquement. C'est idiot, je sais mais j'aimerai d'abord dompter le fla avant de passe au AS.Et le jour ou je passerai en as je saurais quoi mettre ( enfin je pense...) J'avais auparavant essayé de mettre un code as dans le Fla en supprimant : , private,public...Mais forcement cela ne marche pas.
De plus, plus je regarde ton code moins je le comprend; je m'explique.
Théoriquement " private " c'est pour les classes externes avec mais là je ne vois pas de Package est tout ce qui s'en suit...Je te redit , je débute mais je n'ai jamais vu ça...
(PS: j'ai copié ton code dans le Fla : message d'erreur; il ne reconnait pas le Private.Donc j'ai supprime le Private et il me met acces a la propriete non defis :Cadrephoto ( c'était simplement 2 noms :Cadrephoto/cadrePhoto)
maintenant il le met : warning 1100 affectation dans une clause conditionnelle pour la ligne :
if(n<0){n=nmax-1;}else{if(n=nmax){n=0;}}
mais là, je bloque.
Donc si les chiante te te font pas peur, merci de m'aider

A++
(tu peux aussi me maudire)
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
3 févr. 2012 à 12:17
Bonjour,
dsl c'est une petite erreur de ma part
le pb d'affecttion dns une clause conditionnelle est ici:

if(n<0){n=nmax-1;}else{if(n==nmax){n=0;}}

sinon quand a ta méthodologie de travail, il ne faut plus mettre de code dans le fla, mais dans une ouplusieur classe externe.
pour débuter commence avec une classe "Main" pour laquelle tu fait un lien dans l'onglet "publier"/Classe de ta colonne de droite de ton fla.
après pour mettre les base de ta classe principale c'est comme ceci:


package{
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import com.greensock.*;

public class Main{
private var monXML:XML;
private var nmax:int;
private var nb:int=0;
private var numeroImage:int=0;
private var texteAlt:TextField=new TextField();
private var texteTxt:TextField=new TextField();
private var var Cadrephoto:Sprite=new Sprite();

public function Main():void{
texteAlt.x=265; 
texteAlt.y=454;
//texteAlt.height=;
//texteAlt.width=;
texteTxt.x=400; 
texteTxt.y=690;
//texteTxt.height=;
//texteTxt.width=;
texteAlt.selectable=texteTxt.selectable=false;
texteAlt.antiAliasType=texteTxt.antiAliasType="advanced";
texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; 

var btPrecedente:BtGauche=new BtGauche();
btPrecedente.val=-1;
btPrecedente.x=178.4;
btPrecedente.y=246.7;
var btSuivante:BtDroite=new BtDroite();
btSuivante.val=1;
btSuivante.x=215.8;
btSuivante.y=368.1;
btPrecedente.alpha=btSuivante.alpha=0.5;
btPrecedente.buttonMode=btSuivante.buttonMode=true;

cadrePhoto.x=500;
cadrePhoto.y=125;
cadrePhoto.alpha=0;

addChild(texteAlt);
addChild(texteTxt);
addChild(btPrecedente);
addChild(btSuivante);
addChild(cadrePhoto);

var chargeurXML:URLLoader=new URLLoader(); 
chargeurXML.addEventListener(Event.COMPLETE,XMLCharge);
chargeurXML.load(new URLRequest("DosXML/paysage.xml"));
}

//______________________________ event
private function XMLCharge(evt:Event):void{
if(evt.target!=null){								
evt.target.removeEventListener(Event.COMPLETE,XMLCharge);
monXML=new XML(evt.target.data);
monXML.ignoreWhite=true;
acquerir();
}
}
private function imageChargee(evt:Event):void{
evt.target.removeEventListener(Event.COMPLETE,imageChargee);
if(nb==0){animer(0);}
nb++;
if(nb==nmax){btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer);}
}
private function naviguer(evt:MouseEvent):void{
switch(evt.type){
case "mouseOver":
evt.currentTarget.alpha=0;
evt.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,naviguer);
break;
case "mouseOut":
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
evt.currentTarget.alpha=0.5;
break;
case "mouseDown" :
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
masquer(numeroImage);
var n:int=numeroImage+evt.currentTarget.val;
if(n<0){n=nmax-1;}else{if(n==nmax){n=0;}}
numeroImage=n;
animer(numeroImage);
break;
}
}

//______________________________ private
private function acquerir():void{
nmax=monXML.image.length();
var photo:Loader;
for(var i:int=0;i<nmax;i++){
photo=new Loader();
photo.name="p"+i;
photo.visible=false;
cadrePhoto.addChild(photo);
photo.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee);
photo.load(new URLRequest(monXML.image[i].@url));
}
}
private function formater(pCible:TextField,pSize:int):void{
var Style:TextFormat=new TextFormat();
Style.color=0x999999; 
Style.size=pSize; 
Style.font="Brush Script Std"; 
Style.align="left";
pCible.setTextFormat(Style);
}
private function animer(pVal:int):void{
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=true;
texteAlt.text=monXML.image[pVal].@alt; 
formater(texteAlt,14); 
texteTxt.text=monXML.image[pVal].@txt; 
formater(texteTxt,20);
TweenMax.to(cadrePhoto,1,{alpha:1}); 
}
private function masquer(pVal:int):void{
TweenMax.killChildTweensOf(this,true);
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=false;
}
}
}



PS: j'ai pas testé , mais bon si ily a d'autre message d'erreur ca donne l'occasion de comprendre un peu plus^^
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
3 févr. 2012 à 12:58
Merci de me répondre.
Si j'ai bien compris le 1er code que tu m'as donné c'était pour la " version Fla " et l'autre AS
Je suis restée avec le 1er pour l'instant mais il ne marche toujours pas. Pas de message d'erreur , je vois simplement mes deux boutons et c'est tout .
( je te le promet, je m'y mettre bientôt avec les classes externes...D'ailleur pour un code aussi court que le mien, je ne vois pas pourquoi le mettre dans un AS...(solution de vitesse, de poids???...)Explique moi !
A++ dans la soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
3 févr. 2012 à 14:00
Re-Bonjour,

Pour débuter sur de bonne base, je te conseille et insite sur le fait d'utiliser le fla uniquement comme bibliotheque et pour réaliser des movieclips animés(ce deuxième usage tend d'ailleurs a disparaitre au profit d'un gestion full script)

cette pratique n'est qu'une première étape indispensable dans un processus d'amélioration de tes compétences. Dans l'avenir tu travailleras certainement avec les héritages de classe, la programmation orientée objet et aspect, etc...

D'autre part externaliser son code a de nombreux avantages:
> Developpement plus souple et collaboratif
> Maintenance et evolutivité plus simple
> Sécurité et puissance pouvant etre alors accrue
> ...

Tout language moderne fonctionne sur des scripts externes.
enfin tu auras d'autant plus de facilité a transposé tes scripts en d'autre language type "ECMAscript"

Voila si je me repette, c'est que c'est un passage obligé, alors autant prendre le bon chemin tout de suite au lieu de se perdre sur les bas-cotés.

Cordialement

PS j'ai oublié de corrigé l'erreur Cadrephoto/cadrePhoto
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
3 févr. 2012 à 21:59
Bonsoir Aerolyte !

Bon, j'ai fais le grand pas pour passer sur AS .Donc j'ai copié ton code dans un as, mis mon nom de classe " Main " dans "Propriétés/ Publier/classe"
et la, Rien !
Meme pas un message d'erreur, écran noir.
Je pensais que quand tu passes par "Propriétés/ Publier/classe", on n'avez rien d'autre à faire.
Car si on le passe par le script Fla :import machin.truc.chouette;
on allez dans les préférence pour retrouver le chemin source.
Là, je ne sais pas. Quand je clique sur le crayon a coté du nom de la classe
j'ai: " le chemin de classe ne contient pas de définition...."
Crois tu que je l'aurai un jour ce foutu diaporama ???
A++
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
3 févr. 2012 à 23:05
1/ tu enleves le code de ton fla
2/ tu lie le nom de ta classe principale a droite
3/ tu créer un document as du meme nom que celui indiqué
4/ tu copie le code et tu l'enregistre au meme niveau que le fla
5/ tu fais ctrl+enter et tu devrais avoir le résultat.
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
4 févr. 2012 à 00:12
c'est bien se que j'ai fait 2/3 fois. J'ai redémarré l'ordi.
J'ai une réaction : 9 erreurs de compilations:il ne reconnait pas :
1180: Appel à une méthode qui ne semble pas définie, addChild. addChild(texteAlt);
addChild(texteTxt);
addChild(btPrecedente);
addChild(btSuivante);
addChild(cadrePhoto);
////////////////////////////////////////////
1120: Accès à la propriété non définie btPrecedente.
if(nb==nmax){btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer);}

////////////////////////////////////////////////
1120: Accès à la propriété non définie btSuivante.
if(nb==nmax){btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer);}

/////////////////////////////////////////////////
1067: Contrainte implicite d'une valeur du type Main vers un type sans rapport flash.display:DisplayObjectContainer.
TweenMax.killChildTweensOf(this,true);

///////////////////////////////////////////////////
Warning: 3590: void utilisée alors qu'une valeur booléenne est attendue. L'expression va être transtypée comme booléenne.

this.gc = !enabled;

_initVal = _target.visible;

isDC (a[i].target a[i].vars.onComplete);

isDC (TweenLite(a[i]).target TweenLite(a[i]).vars.onComplete);

///////////////////////
5000: La classe 'Main' doit être une sous-classe de 'flash.display.MovieClip', puisqu'elle est liée à un symbole de bibliothèque du type correspondant.



A++
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
4 févr. 2012 à 03:12
oups desolé;
1/
public class Main extends MovieClip{

2/
il faut que tu coche l'option "xporter pour l'accsionscript pour tes boutons en vérifiant que le nom indiquer est le meme que dans le script

3/
pour le tweenMax je ne connais pas trop mais test déja avec les modifs précédentes, et si il y a eencore une erreur sur le tweenMax cela vient du ciblage (this)

les autres erreurs découlent normalement du point "1/"

voili voilou
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
4 févr. 2012 à 03:16
ah non je viens de me relire
il faut mettre les declarations de variable des boutons des le debut


public class Main{
private var monXML:XML;
private var nmax:int;
private var nb:int=0;
private var numeroImage:int=0;
private var texteAlt:TextField=new TextField();
private var texteTxt:TextField=new TextField();
private var Cadrephoto:Sprite=new Sprite();
private var btPrecedente:BtGauche=new BtGauche();
private var var btSuivante:BtDroite=new BtDroite();

public function Main():void{
texteAlt.x=265; 
texteAlt.y=454;
//texteAlt.height=;
//texteAlt.width=;
texteTxt.x=400; 
texteTxt.y=690;
//texteTxt.height=;
//texteTxt.width=;
texteAlt.selectable=texteTxt.selectable=false;
texteAlt.antiAliasType=texteTxt.antiAliasType="advanced";
texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT; 

btPrecedente.val=-1;
btPrecedente.x=178.4;
btPrecedente.y=246.7;
btSuivante.val=1;
btSuivante.x=215.8;
btSuivante.y=368.1;
btPrecedente.alpha=btSuivante.alpha=0.5;
btPrecedente.buttonMode=btSuivante.buttonMode=true;
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
4 févr. 2012 à 11:13
Bonjour !
Voici le script mise à jour.
Je ne vois que les deux boutons, mais pas de message d'erreur :
package{
import flash.display.*;
import flash.text.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import com.greensock.*;

public class Main extends MovieClip{
private var monXML:XML;
private var nmax:int;
private var nb:int=0;
private var numeroImage:int=0;
private var texteAlt:TextField=new TextField();
private var texteTxt:TextField=new TextField();
private var cadrePhoto:Sprite=new Sprite();
private var btPrecedente:BtGauche=new BtGauche();
private var btSuivante:BtDroite=new BtDroite();

public function Main():void{

texteAlt.x=265;
texteAlt.y=454;
//texteAlt.height=;
//texteAlt.width=;
texteTxt.x=400;
texteTxt.y=690;
//texteTxt.height=;
//texteTxt.width=;
texteAlt.selectable=texteTxt.selectable=false;
texteAlt.antiAliasType=texteTxt.antiAliasType="advanced";
texteAlt.autoSize=texteTxt.autoSize=TextFieldAutoSize.LEFT;

btPrecedente.val=-1;
btPrecedente.x=178.4;
btPrecedente.y=246.7;
btSuivante.val=1;
btSuivante.x=215.8;
btSuivante.y=368.1;
btPrecedente.alpha=btSuivante.alpha=0.5;
btPrecedente.buttonMode=btSuivante.buttonMode=true;
cadrePhoto.x=500;
cadrePhoto.y=125;
cadrePhoto.alpha=0;

addChild(texteAlt);
addChild(texteTxt);
addChild(btPrecedente);
addChild(btSuivante);
addChild(cadrePhoto);

var chargeurXML:URLLoader=new URLLoader();
chargeurXML.addEventListener(Event.COMPLETE,XMLCharge);
chargeurXML.load(new URLRequest("DosXML/paysage.xml"));
}

//______________________________ event
private function XMLCharge(evt:Event):void{

if(evt.target!=null){
evt.target.removeEventListener(Event.COMPLETE,XMLCharge);
monXML=new XML(evt.target.data);
monXML.ignoreWhite=true;
acquerir();
}
}
private function imageChargee(evt:Event):void{
evt.target.removeEventListener(Event.COMPLETE,imageChargee);
if(nb==0){animer(0);}
nb++;
if(nb==nmax){btPrecedente.addEventListener(MouseEvent.MOUSE_OVER,naviguer);btSuivante.addEventListener(MouseEvent.MOUSE_OVER,naviguer);}
}
private function naviguer(evt:MouseEvent):void{
switch(evt.type){
case "mouseOver":
evt.currentTarget.alpha=0;
evt.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN,naviguer);
break;
case "mouseOut":
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
evt.currentTarget.alpha=0.5;
break;
case "mouseDown" :
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,naviguer);
evt.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,naviguer);
masquer(numeroImage);
var n:int=numeroImage+evt.currentTarget.val;
if(n<0){n=nmax-1;}else{if(n==nmax){n=0;}}
numeroImage=n;
animer(numeroImage);
break;
}
}

//______________________________ private
private function acquerir():void{
nmax=monXML.image.length();
var photo:Loader;
for(var i:int=0;i<nmax;i++){
photo=new Loader();
photo.name="p"+i;
photo.visible=false;
cadrePhoto.addChild(photo);
photo.contentLoaderInfo.addEventListener(Event.COMPLETE,imageChargee);
photo.load(new URLRequest(monXML.image[i].@url));
}
}
private function formater(pCible:TextField,pSize:int):void{
var Style:TextFormat=new TextFormat();
Style.color=0x999999;
Style.size=pSize;
Style.font="Brush Script Std";
Style.align="left";
pCible.setTextFormat(Style);
}
private function animer(pVal:int):void{
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=true;
texteAlt.text=monXML.image[pVal].@alt;
formater(texteAlt,14);
texteTxt.text=monXML.image[pVal].@txt;
formater(texteTxt,20);
TweenMax.to(cadrePhoto,1,{alpha:1});
}
private function masquer(pVal:int):void{
TweenMax.killChildTweensOf(this,true);
var photo:Loader=cadrePhoto.getChildByName("p"+pVal)as Loader;
photo.visible=false;
}
}
}

Je suis désolée

A++
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
4 févr. 2012 à 13:56
a partir de la tu vas utiliser un trace pour cibler l'origine du pb

commence dès
private function XMLCharge(evt:Event):void{
trace("ok");
si tu as ton trace en sortie ca marche sinon ton pb est ici,

et ainsi de suite jusqu'a ce ue tu cible l'orine du pb
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
4 févr. 2012 à 14:07
J'ai tout mis directement au lieu de les faire un par un et dans ma page de sortie seul deux sont valides:
ok XMLCharge et Ok acquerir

A++
0
aerolyte Messages postés 465 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 4 mai 2013 1
4 févr. 2012 à 14:58
jepense que ton soucis viens du xml.

fait un

private function acquerir():void{
nmax=monXML.image.length();
trace(nmax);
trace(monXml);

je serait tanter de dire que tu n'as pas adapter ton xml
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
4 févr. 2012 à 15:08
Il est vrai que le XML est celui de base ( voir 1er message)

en sortie, il me valide ok nmax et ok monXml

A++
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
9 févr. 2012 à 23:47
Bonsoir Aerolyte !

Ca marche ! Je te remercie beaucoup pour ton aide.
le problème que j'avais est tout con même honteux MAJUSCULE/minuscule
avec le URL ( pas fière la fille )(oui d'accord je suis une fille ;) )

encore un grand MERCI

et A+++ car j'aurai forcement d'autre questions
0
kadom07 Messages postés 18 Date d'inscription vendredi 27 janvier 2012 Statut Membre Dernière intervention 12 avril 2014
9 févr. 2012 à 23:49
0
Rejoignez-nous