PDA

Volledige versie bekijken : [n00b] vanuit class andere class property aanroepen???


Baukereg
%Europe/Berlin %790 %2007, 19:58
Ok, ik heb een tile-based game met twee classes, data_lvl en gui_lvl. Kort gezegt bevat de data_lvl alle gegevens van het level, en bevat gui_lvl alle gegevens en methodes om het level zichtbaar te maken. Alle gegevens en methodes zijn public. Beide classes zijn in de eerste frame van de .fla geconstruced.

Nu is het dus de bedoeling dat gui_lvl gegevens van data_lvl uitleest, zoals bijvoorbeeld de startpositie van de speler. Maar hoe doe ik dit?

Ik heb het geprobeerd op de volgende manier:

// in gui_lvl
_heroPosition = _root.data_lvl._heroPosition;

Maar dit werkt dus niet, undefined krijg ik dan.

Het liefst zou ik in gui_lvl een soort referentie naar data_lvl maken. Zoiets als:

lvl = _root.data_lvl;
_heroPosition = lvl._heroPosition

Dat zou het een stuk eenvoudiger maken. Hoe kan ik dit doen, en wat voor dataType moet deze referentie dan krijgen?

Emveedee
%Europe/Berlin %801 %2007, 20:13
Laat eens zien hoe je je classes aanroept in de fla?

Je moet dus iig een var maken in de ene class die een instance van de andere class bevat.

Baukereg
%Europe/Berlin %810 %2007, 20:27
var _xml = new XML();
_xml.ignoreWhite = true;
_xml.onLoad = function(success){
data_lvl = new data_lvl(_xml);
}
_xml.load("xml_lvl.xml");

gui_lvl = new gui_lvl();

Dit werkt prima, als ik Debug Movie doe kan ik zien dat alle classes prima aangemaakt zijn, allemaal in de _root (_level0). Ik moet dus weten hoe ik vanuit de ene class de andere kan aanspreken.

het vreemde is, ik heb de volgende button gemaakt en die werkt prima:

on (press) {
trace(_root.data_lvl._actName);
}

Maar wanneer ik deze trace code in gui_lvl zet werkt het niet!

Emveedee
%Europe/Berlin %821 %2007, 20:43
Heb je on(press) in je class staan?
Dat gaat sowieso nooit werken.

Je kan best bij het aanmaken van gui_lvl een variabele meegeven die
de instance van data_lvl bevat.
Die kan je dan opslaan in een variabele en dan aanroepen uit je gui_lvl class.

Baukereg
%Europe/Berlin %853 %2007, 21:28
Welk datatype moet die referentie dan hebben?

{edit} laat maar, het werkt al met datatype Object{edit}

var _xml = new XML();
_xml.ignoreWhite = true;
_xml.onLoad = function(success){
data_lvl = new data_lvl(_xml);
gui_lvl = new gui_lvl(data_lvl);
}
_xml.load("xml_lvl.xml");

Emveedee
%Europe/Berlin %867 %2007, 21:48
Het kan gewoon een Object zijn,
of :data_lvl :)


class Voorbeeld
{
}

// in de fla:

// variabele kan gewoon het datatype hebben van jouw class
var v:Voorbeeld = new Voorbeeld();