AS3 + XML +文本

时间:2012-05-31 18:08:42

标签: xml actionscript-3 textfield

我正在做一个展示,我有四张图片加载形成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 个答案:

答案 0 :(得分: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);