biguiz
Messages postés198Date d'inscriptionvendredi 4 avril 2008StatutMembreDernière intervention 6 novembre 2009
-
3 sept. 2008 à 00:43
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010
-
3 sept. 2008 à 18:59
bonjour tout le monde !
J'ai un petit problème de débutant.
J'ai fait une galerie images à partir d'un tutorial anglais, et tout marche très bien.
Quand je clique sur une miniature, la photo apparait en plus grand.
Ce que je souhaiterais, c'est en fait, rajouter un texte dans une zone de texte dynamique, pour décrire cette photo.
Or, la manière dont est appelé les children du xml n'est pas celle que j'ai apprise en cours.
Donc je bloque un peu.
Je vous remercie d'avance pour votre aide.
//---------loading the external xml file-------
var urlRequest:URLRequest = new URLRequest("pics.xml");
var urlLoader:URLLoader = new URLLoader();
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
urlLoader.load(urlRequest);
//--------holds the paths to the thumbnails-------
var arrayURL:Array = new Array();
//--------holds the paths to the big photos-------
var arrayName:Array = new Array();
//--------holds the thumbnail objects-------
var holderArray:Array = new Array();
//--------represents the number of collumns-------
var nrColumns:uint = 5;
//-------represents the container of our gallery
var sprite:Sprite = new Sprite();
addChild(sprite);
var thumb:Thumbnail;
//-------- the thumbnails container-------
var thumbsHolder:Sprite = new Sprite();
sprite.addChild(thumbsHolder);
//-------- the photoLoader container-------
var loaderHolder:Sprite = new Sprite();
loaderHolder.graphics.beginFill(0xffffff,1);
loaderHolder.graphics.drawRect(0,0,550,330);
loaderHolder.graphics.endFill();
loaderHolder.x = 1000;
loaderHolder.y = 10;
sprite.addChild(loaderHolder);
//-------- loads the big photo-------
var photoLoader:UILoader = new UILoader();
photoLoader.width = 540;
photoLoader.height = 320;
photoLoader.y = 5;
photoLoader.x = 5;
photoLoader.buttonMode = true;
photoLoader.addEventListener(MouseEvent.CLICK,onClickBack);
loaderHolder.addChild(photoLoader);
/* we loop through the xml file
populate the arrayURL, arrayName and position the thumbnalis*/
function fileLoaded(event:Event):void {
myXML = XML(event.target.data);
xmlList = myXML.children();
for (var i:int=0; i<xmlList.length(); i++) {
var picURL:String = xmlList[i].url;
var picName:String = xmlList[i].big_url;
arrayURL.push(picURL);
arrayName.push(picName);
holderArray[i] = new Thumbnail(arrayURL[i],i,arrayName[i]);
holderArray[i].addEventListener(MouseEvent.CLICK,onClick);
holderArray[i].name = arrayName[i];
holderArray[i].buttonMode = true;
if (i<nrColumns) {
holderArray[i].y = 65;
holderArray[i].x = i*110+65;
} else {
holderArray[i].y = holderArray[i-nrColumns].y+110;
holderArray[i].x = holderArray[i-nrColumns].x;
}
thumbsHolder.addChild(holderArray[i]);
}
}
//----handles the Click event added to the thumbnails--
function onClick(event:MouseEvent):void {
photoLoader.source = event.currentTarget.name;
Tweener.addTween(thumbsHolder, {x:-50, time:1, transition:"easeInSine"});
Tweener.addTween(loaderHolder, {x:10, time:1, transition:"easeInSine"});
Tweener.addTween(thumbsHolder, {alpha:0, time:1, transition:"linear"});
Tweener.addTween(loaderHolder, {alpha:1, time:1, transition:"linear"});
}
//----handles the Click event added to the photoLoader----
function onClickBack(event:MouseEvent):void {
Tweener.addTween(thumbsHolder, {x:0, time:1, transition:"easeOutBounce"});
Tweener.addTween(loaderHolder, {x:1000, time:1, transition:"easeOutBounce"});
Tweener.addTween(thumbsHolder, {alpha:1, time:2, transition:"linear"});
Tweener.addTween(loaderHolder, {alpha:0, time:2, transition:"linear"});
}
cs_ourso
Messages postés92Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention 5 décembre 2010 3 sept. 2008 à 18:59
c'est quoi la méthode que l'on t'a apprise en cours ?
variable = xml_load.firstChild.childNodes[t].attributes.un_attribut_XML; ?
dans ce cas en effet tu dois bloquer parce que c'est de l'as 2.
en AS 3 les loading et la navigation on changé, le loading en plus pointu et demande donc un effort d'adaptation. Quand à la navigation elle est devenue simplissime notamment avec l'utilisation de la boucle for each.
Je t'envoie un exemple sur lequel je bosse en ce moment pour te donner une idée de la navigation en AS 3 :
// on suppose que ton xml est loadé est qu'il se trouve dans un objet XMLstring appelé xml_datas.
//là, ma boucle for each va aller naviguer dans chaque noeud enfant du xml mais j'aurai pu noter aussi : xml_datas.*
// en gros chaque fois qu'il visite un noeud il l'appele du nom de la variable que tu lui indique, ici item .
for each (var item:XML in xml_datas.children())
{
// là je verifie la longeur de chaque noeud enfant de ma variable item
var longueur:int = item.*.length();
var i:int = 0;
// ici je rentre le nom de la balise dans une variable
var nom:String = item.name();
// et là je visite les noeud enfant de item
for each (var subNode:XML in item.*)
{
// la je donne une condition en fonction de l'attribut type contenu dans le noeud représenté par item et aussi du nom de balise de item
if ((item.@type=="simple")&&(item.name()=="palette"))
{
// encore des transformation d'attribut en varaible
var identifiant:String = subNode.@id.toString();
var couleur:String = subNode.@valeur.toString();
// note ici comment on donne un nom dynamique à une variable au sein d'un objet