PDA

Volledige versie bekijken : Return Instance-name


bracke
%Europe/Berlin %290 %2005, 07:58
Als je een instance-name(bv:speler1) hebt toegekent en ik wil die IN in een dynamic textbox (met var=speler) laten weergeven, dan zeg ik simpel:

speler1.onRelease=function()
{
speler=speler1;
}

Nu zit ik met volgende immense code waarbij ik de positie van mijn probleem heb aangeduid. Ik heb dus mijn spelertjes aangemaakt en ze hebben als IN gekregen:

//Spelertjes + Starts weergeven
aantal = 18;
var depth = 0;
var spacing = 30;
perrij = 9;
for (var i = 1; i<=aantal; i++) {
var loadStart = attachMovie("start", "start"+i, depth++);
var loadSpeler = attachMovie("speler", "speler"+i, depth++);
loadStart._y = i*spacing;
loadSpeler._y = i*spacing;
loadStart._x = 270;
loadSpeler._x = 270;
if (i>perrij) {
loadStart._y = i*spacing-perrij*spacing;
loadSpeler._y = i*spacing-perrij*spacing;
loadStart._x += 30;
loadSpeler._x += 30;
}
}
//Drag Drop
links = 10;
rechts = 400;
boven = 10;
onder = 250;
lock = true;
i = 1;
while (i<=18) {
eval("speler"+i).onPress = function() {
this.startDrag(lock, links, boven, rechts, onder);
startpositieX = getProperty(this, _x);
startpositieY = getProperty(this, _y);
----> [Hier zou iets moeten komen dat zegt speler=instancename van speler i]
};
eval("speler"+i).onRelease = function() {
stopDrag();
if (this._droptarget != "") {
positie = this._droptarget;
positieX = getProperty(this._droptarget, _x);
positieY = getProperty(this._droptarget, _y);
this._x = positieX;
this._y = positieY;
} else {
positie = "onbekend";
this._x = startpositieX;
this._y = startpositieY;
}
};
i = i+1;
}

speler1,speler2,speler3....



Nu wil ik, ALS ik op een van die spelers druk dat de instance-naam in een dynamic terecht komt. Dit lukt mij niet. Iemand wel???

gbolssens
%Europe/Berlin %312 %2005, 08:30
de instance name van een mc haal je op met de ._name property:

my_txt.text = my_mc._name;

wat in sommige gevallen nogal een stomme construct is, want om my_mc te aanroepen, moet je de instance name zelf in elkaar knutselen; In jouw geval kan dit dan weer niet omdat je in een for-lus zit.

Op het moment dat je op die speler klikt is de for-lus al klaar en staat i op 19 (hij heeft na 18 nog 1x i++ gedaan en is dan gestopt omdat 19 niet <=18 )

volgende code zal dus nooit werken; geeft altijd speler = "speler19":


eval("speler"+i).onPress = function() {
this.startDrag(lock, links, boven, rechts, onder);
startpositieX = getProperty(this, _x);
startpositieY = getProperty(this, _y);
speler = "speler"+i;// <<<<<<-------------------------
};

de code "speler"+i wordt pas uitgevoerd als je op de speler klikt, vandaar altijd speler19.

in dit geval, of als je de instance name niet op voorhand kunt weten, heeft de ._name property zin. In jouw voorbeeld zou je met this kunnen werken om dat je in een event handler van die mc zit:

eval("speler"+i).onPress = function() {
this.startDrag(lock, links, boven, rechts, onder);
startpositieX = getProperty(this, _x);
startpositieY = getProperty(this, _y);
speler = this._name;// <<<<<<-------------------------
};



greetz,
GB

bracke
%Europe/Berlin %331 %2005, 08:57
Bedankt. Het werkt!