2012-05-31 2 views
0

Я делаю витрину, у меня есть четыре картинки, которые загружают XML-форму, каждое изображение имеет описание, я пытаюсь загрузить текст каждого изображения в рамке, но загружаю только один из описания, y могут загружать изображения, но я не могу загрузить описания для каждого из них.AS3 + XML + текст

Пожалуйста, помогите мне, я работал в течение трех дней, и я не могу найти ответ.

import flash.display.Loader; 
import flash.net.URLRequest; 

import fl.controls.ProgressBar; 
import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import fl.transitions.TweenEvent; 

var columnas:Number; 
var xml_x:Number; 
var xml_y:Number; 
var miniatura_ancho:Number; 
var miniatura_alto:Number; 
var imagenes:XMLList; 
var total_xml:Number; 

var link:String; 

var i:Number=0; 

var contenedor_mc:MovieClip; 
var precargar_mc:MovieClip; 
var todo_mc:MovieClip; 

var contador_x:Number = 0; 
var contador_y:Number = 0; 

var interpolaciones:Array = []; 
var contenedor_mc_interpolacion:Tween; 
var todo_interpolaciones:Tween; 

var texto:TextField = new TextField(); 


import flash.display.Loader; 
import flash.net.URLRequest; 

var colchon_XMLCargador:URLLoader = new URLLoader(); 
colchon_XMLCargador.load(new URLRequest("swf/ortopedico/ortopedicos_sencillo.xml")); 
colchon_XMLCargador.addEventListener(Event.COMPLETE, procesarXML); 

function procesarXML(e:Event):void 
{ 
    var colchon_XML:XML = new XML(e.target.data); 

    columnas = colchon_XML. @ COLUMNAS; 
    xml_x = colchon_XML. @ POSICIONX; 
    xml_y = colchon_XML. @ POSICIONY; 
    miniatura_ancho = colchon_XML. @ ANCHO; 
    miniatura_alto = colchon_XML. @ ALTO; 

    imagenes = colchon_XML.imagen; 
    total_xml = imagenes.length(); 

    crearContenedor(); 
    llamarMiniatura(); 

    colchon_XMLCargador.removeEventListener(Event.COMPLETE, procesarXML); 
    colchon_XMLCargador = null; 

} 

function crearContenedor():void 
{ 
    contenedor_mc = new MovieClip(); 
    contenedor_mc.x = xml_x; 
    contenedor_mc.y = xml_y; 
    addChild(contenedor_mc); 
    } 

function llamarMiniatura():void 
{ 
    for (var i:Number = 0; i < total_xml; i++) 
    { 

     var miniatura_url = imagenes[i]. @ miniatura; 

     var miniatura_cargador = new Loader(); 

     miniatura_cargador.load(new URLRequest(miniatura_url)); 
     miniatura_cargador.contentLoaderInfo.addEventListener(Event.COMPLETE, miniaturaCargada); 

     miniatura_cargador.name = i; 

     miniatura_cargador.x = (miniatura_ancho+8)*contador_x; 
     miniatura_cargador.y = (miniatura_alto+8)*contador_y; 

     texto.htmlText = imagenes[i].descripcion.toString(); 

     if (contador_x + 1 < columnas) 
     { 
      contador_x++; 
     } 
     else 
     { 
     contador_x = 0; 
     contador_y++; 
     } 

     if (contador_x <= 1) 
     { 
      contenedor_mc.x = (stage.stageWidth - miniatura_cargador.width -140)/2; 
      contenedor_mc.y = (stage.stageHeight - miniatura_cargador.height -48)/2; 
     } 

     if (total_xml <= 4) 
     { 
      contenedor_mc.x = (stage.stageWidth - (total_xml*miniatura_ancho)-(8+total_xml))/2; 
      contenedor_mc.y = xml_y; 
     } 
     else 
     { 
      contenedor_mc.x = xml_x; 
      contenedor_mc.y = xml_y; 
     } 

    } 
} 

function miniaturaCargada(e:Event):void 
{ 
    var miniatura:Loader = Loader(e.target.loader); 
    contenedor_mc.addChild(miniatura); 

    addChild (texto); 
    interpolaciones[Number(miniatura.name)] = new Tween(miniatura,"alpha",Strong.easeIn,0,1,0.5,true); 

    miniatura.contentLoaderInfo.removeEventListener(Event.COMPLETE, miniaturaCargada); 
} 



//Vinculo; 
texto.addEventListener(TextEvent.LINK, vinculo_texto); 

function vinculo_texto(te:TextEvent):void 
{ 
    navigateToURL(new URLRequest(link)); 
} 


function interpolacionFin(e:TweenEvent):void 
{ 
    var cargador:Loader = Loader(e.target.obj); 
    cargador.unload(); 
    todo_mc.removeChild(cargador); 
    removeChild(todo_mc); 

    todo_mc = null; 

    var interpolacion:Tween = Tween(e.target); 
    interpolacion.removeEventListener(TweenEvent.MOTION_FINISH, interpolacionFin); 
} 
+1

Вы переназначить значение с каждой итерации texto.htmlText петли = –

ответ

0

The_asMan Правильно. У вас есть одно текстовое поле, и вы переназначаете это значение с каждым циклом в llamarMiniatura(). Рассмотрим либо объединение значения с каждым циклом, либо создание нового текстового поля, и добавление этого.


конкатенация:

texto.htmlText = texto.htmlText + "\n" + imagenes[i].descripcion.toString(); 


Новый TextField:

var txt:TextField = new TextField(); 
txt.addEventListener(TextEvent.LINK, vinculo_texto); 
txt.htmlText = imagenes[i].descripcion.toString(); 
addChild(txt);