[Flash Actionscript] XMLCommunicatie binnen object

Pagina: 1
Acties:

  • QkE
  • Registratie: April 2002
  • Laatst online: 20-08 11:12

QkE

In your face Gnagna

Topicstarter
Na twee dagen hard zwoegen, op internet zoeken naar antwoorden en tig koppen koffie heb ik toch maar besloten de hulp van de echte experts in te roepen. Jullie dus...

Het probleem is dat ik graag een object wil maken (niet visueel) wat ervoor zorgt dat er via sendAndLoad gegevens binnengehaald, bewerkt en opgeslagen worden in dat object. Zoals ik hierboven al schreef heb ik al een heleboel geprobeerd, maar op de een of andere manier niet het juiste.

Ik heb het idee dat het aan de scope van de variabelen ligt. De sendAndLoad functie heeft een methode onLoad. Hier kan een functie aan worden gehangen. Het probleem is alleen dat de "this" waarmee je normaal het zelfgemaakte object aanspreekt nu ineens het XML object is.

Wat ook mogelijk is is om de functie wat losser aan te roepen, waardoor de "this" wel het zelfgemaakte object is, maar dan is het weer niet mogelijk om de waarde van het XML object op te vragen.

Het klinkt misschien een beetje wazig, maar ik hoop dat mijn bedoelingen toch duidelijk zijn.

Verwijderd

Err, wat wil je precies doen, wat gaat er mis, en wat heb je al voor code....ik snap van dit verhaal niet heel veel.

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

niet this gebruiken maar gewoon de naam van het object...voorbeeld:


Flash ActionScript:
1
2
3
4
5
myXML = new XML();
myXML.onData = function() {
trace("blaat");
}
myXML.sendAndLoad("http://www.foo.com/blaat", "POST", myXML);


zo :)

"You're only as good, as what you did last week."


  • QkE
  • Registratie: April 2002
  • Laatst online: 20-08 11:12

QkE

In your face Gnagna

Topicstarter
Dat werkt helaas niet binnen het onLoad event...

  • QkE
  • Registratie: April 2002
  • Laatst online: 20-08 11:12

QkE

In your face Gnagna

Topicstarter
Die class heb ik nodig om ervoor te zorgen dat iemand hier straks relatief eenvoudig gebruik kan maken van het PHP systeem waar Flash mee communiceerd. Het gaat mis op het punt dat ik ofwel de variabelen van het zelfgemaakte object wil vullen met gegevens ofwel de gegevens uit het XML object wil halen/gebruiken. Ik heb de code even vereenvoudigd weergegeven. Het zou kunnen dat er wat kleine foutjes inzitten, maar het gaat dus om de functies van de mainclass.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//Aanmaken van het mainObject
test = new MainObject("test");
//De functie sendNReceive aanroepen
test.sendNReceive;

//class (als je van classes kan spreken) MainObject
function MainObject(testVar)
{
    //inputvariabele aan het object toewijzen.
    this.testVar1 = testVar;

    //functie sendNReceive. Stuurt gegevens naar een pagina in headerformaat en haalt de reply weer op
    //als XML. Dit werkt. Is getest.
    this.sendNReceive=
    function()
    {   
        //Benodigde objecten aanmaken
        ldVars = new LoadVars();
        rcvVars = new XML();
        rcvVars.ignoreWhite = true;
        
        //Het onload event. Hiermee wordt de receive functie aangeroepen waarin alle gegevens worden
        //afgehandeld als de gegevens geladen zijn.
        rcvVars.onLoad = this.receive;
        
        //Het werkelijke zenden en laden
        ldVars.sendAndLoad(loadFile, rcvVars);
    }
    
    this.receive =
    function() 
    {
        //Hier gaat het dus fout. In dit geval is "this" het MainObject, maar als de toewijzing aan
        //het onLoad event iets anders geschreven wordt is "this" rcvVars. Het is alleen niet mogelijk
        //om rcvVars aan te roepen zoals hier beneden.
        this.testVar2 = rcvVars.firstChild.nodeType;
        this.testVar3 = rcvVars.nextSibling.nodeType;
    }   
}

[ Voor 12% gewijzigd door QkE op 27-05-2003 15:03 ]


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

maw, je wilt een object vullen met een XMl file die je terugkrijgt vanuit je PHP systeem? Dan kun je de XML Parser van Arie van Boxel gebruiken als basis maar dan moet je 1 regel aanpassen:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
  xml_to_obj parser
  (c)2003 by Arie van Boxel
  
*/
XML.prototype.parseNodes = function(obj, node) {
    for (var i in node.attributes) {
        obj[i] = node.attributes[i];
    }
    var nName, idx;
    for (var i = 0; i < node.childNodes.length; i++) {
        nName = node.childNodes[i].nodeName;
        if (nName != null) {
            // Go deeper
            if (obj[nName] == undefined) {
                obj[nName] = new Array();
            }
            idx = obj[nName].length;
            obj[nName][idx] = new Object();
            this.parseNodes(obj[nName][idx], node.childNodes[i]);
        } else {
            obj.value = node.firstChild;
        }
    }
};
XML.prototype.onload = function(success) {
    obj = new Object();
    this.parseNodes(obj, this.firstChild);
    this.master[this.firstChild.nodeName] = obj;
    this.callback();
};
XML.prototype.ignoreWhite = true;
XML.prototype.master = this;


is een goede basis, alleen in regel 29 zet je expliciet de naam van het object naar de root node van je document, in jouw geval is dit de parameter van je functie.

HTH :)

"You're only as good, as what you did last week."


  • QkE
  • Registratie: April 2002
  • Laatst online: 20-08 11:12

QkE

In your face Gnagna

Topicstarter
TNX. Ga ik eens even op m'n gemakje met codehighlighting bekijken. Wat is HTH?

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-08 17:28

alienfruit

the alien you never expected

HTH staat voor Hope This Helps
Pagina: 1