Comunidad de diseño web y desarrollo en internet online

Problemas de delegación

Citar            
MensajeEscrito el 20 Oct 2007 05:13 am
Hola.....estoy intentando hacer una clase para manejar más facilmente mis XMLs pero estoy teniendo problemas.
El còdigo es el siguiente:


import mx.utils.Delegate;
class xmlParser {
private var _imageUrls:Array;
private var _imageLocations:Array;
private var _xml:XML;
private var _TotalImages:Number;

public function xmlParser() {
_xml = new XML();
_xml.ignoreWhite = true;
_imageUrls = new Array();
_imageLocations = new Array();
_TotalImages = 0;
}

public function get ImagesLocations():Array {
return _imageLocations;
}

public function get ImagesUrls():Void
{
return _imageUrls;
}

private function SetTotalImages(total:Number):Void
{
_TotalImages = total;
}

private function AddUrl(val:String):Void
{
_imageUrls.push(val);
}

private function AddLocation(val:String):Void {
_imageLocations.push(val);
}

public function StartXmlParser(XmlFile:String):Boolean
{
_xml.onLoad = Delegate.create(this,Success);
return _xml.load(XmlFile);
}

public function get TotalImages():Number
{
return _TotalImages;
}

private function Success()
{
SetTotalImages(Number(_xml.firstChild.childNodes.length));
var k:Number = 0;
if(_xml.status == 0)
{
while(k < _xml.firstChild.childNodes.length)
{
AddUrl(string(_xml.firstChild.childNodes[k].attributes.URL));
AddLocation(string(_xml.firstChild.childNodes[k].attributes.location));
k++;
}
}
}
}


El problema es que al retornarme el vector, me lo devuelve vacio y se que levanta bien los datos desde el xml, porque si hago un trace de _imageUrls en el metodo AddUrl , me muestra los datos correctamente:
es decir:

private function AddUrl(val:String):Void
{
_imageUrls.push(val);
trace(_imageUrls);
}


Estoy trabajando con AS 2.0 y la estructura del xml seria masomenos asi:

<?xml version="1.0" encoding="ISO-8859-1"?>
<images>
<image location="" URL=""/>
<image location="" URL=""/>
<image location="" URL=""/>
</images>
[/b]

Por xckon

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Oct 2007 01:46 pm
Ponle un trace a la función donde obtienes el arreglo, para ver que te esta regresando:

Código :

public function get ImagesUrls():Void {
   trace(_imageUrls);
   return _imageUrls;
}

si no muestra nada es que no estas tomando la variable correcta, o perdiste la variable donde creas el new xmlParser();

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 23 Oct 2007 03:24 pm
No me muestra nada......y la variable es la correcta...

Por xckon

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Oct 2007 12:30 pm
Fijate bien el ámbito donde creas tu variable tipo xmlParser, y el ambito donde llamas la función ImagesUrls, este debe ser el mismo, si no lo es, entonces guarda tu variable tipo xmlParser en una variable publica y estática, y esta la puedes tomar desde cualquier lugar.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.