2012-05-31 34 views
0

我正在做一個展示,我有四個圖片加載形式的XML,每張圖片都有一個描述,我嘗試加載幀中每張圖片的文本,但只加載其中一個描述,y可以加載圖像,但我不能加載descriptios爲他們每一個。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(); 


新文本字段:

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