Sitter och försöker läsa en XML-fil med hjälp av en klass. Vill att när en instans av classen skapas ska den läsa en XML och spara in den i en variabel som heter strXMLData.
Problemet är att jag inte kan komma åt att spara datan i variabeln i funktionen som läser XML-filen.
Här är min kod:
class MCCue {
public var tuteInfo_xml:XML;
public var strXMLData:String;
// Constructor function
public function MCCue () {
trace("Kör MMcue-funktionen");
public var tuteInfo_xml = new XML;
tuteInfo_xml.ignoreWhite = true;
tuteInfo_xml.onLoad = myLoad;
tuteInfo_xml.load("rcs.xml");
//putXML("Här hamnar datan rätt");
}
public function myLoad(sucess) {
if(sucess) {
putXML(this.toString());
}
}
public function putXML(strMyString:String) {
this.strXMLData = strMyString;
}
public function printXML() {
return(this.strXMLData);
}
}
Är det någon som förstår varför putXML(this.toString()); inte fungerar? Det känner som man borde använda något i stil med _global, _root, _parent eller liknande, men har testat alla och inget fungerar.
Sitter nästan och gråter för att jag är så irriterad på att jag inte kan hitta lösningen, kort sagt, är väldigt tacksam för all hjälp som kan fås.
Är grymt tacksam för att du tog dig tid att titta på det. Får det fortfarande inte att fungera.
Ändrade koden till detta:
class MCCue {
//public var tuteInfo_xml:XML;
public var strXMLData:String;
// Constructor function
public function MCCue () {
trace("MMcue-function");
var tuteInfo_xml = new XML;
tuteInfo_xml.ignoreWhite = true;
tuteInfo_xml.MCCueObj = this;
tuteInfo_xml.onLoad = function(sucess) {
if(sucess) {
//trace(this.toString());
this.MCCueObj.putXML("Content from tuteInfo_xml");
}
}
tuteInfo_xml.load("rcs.xml");
//putXML("This is the content");
}
public function putXML(strMyString:String) {
this.strXMLData = strMyString;
}
public function printXML() {
return(this.strXMLData);
}
}
Kör jag trace i "if(sucess) {" skrivs värdet ut, men det sparas inte ner med putXML. Däremot om jag kommenterar in raden "//putXML("This is the content");" Så skrivs det så de måste ha med referensen till den metoden att göra.
så här kan du göra, själv använder jag mig av Delegate-classen,
import mx.utils.Delegate;
sen te x objekt.onLoad = Delegate.create(this, funktion);
Eller Big Spaceships Delegate-class, googla. :)
Men kör så här:
class MCCue {
//public var tuteInfo_xml:XML;
public var strXMLData:String;
// Constructor function
public function MCCue () {
trace("MMcue-function");
var tuteInfo_xml = new XML;
tuteInfo_xml.ignoreWhite = true;
tuteInfo_xml.MCCueObj = this;
var ref = this;
tuteInfo_xml.onLoad = function(sucess) {
if(sucess) {
//trace(this.toString());
ref.putXML(this.toString());
}
}
tuteInfo_xml.load("rcs.xml");
//putXML("This is the content");
}
public function putXML(strMyString:String) {
this.strXMLData = strMyString;
}
public function printXML() {
return(this.strXMLData);
}
}
258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849