ik heb een script gemaakt dat uit een XML wat variabelen maakt en aan de hand daarvan die 1 voor 1 neerzet.
dit is de (zover relevante) code voor het laden van de XML
dit is de functie voor het maken en neerzetten van de buttons
eerder had ik de functie zonder XML maar alleen wat arrays niet in een functie (dus gelijk beginnend bij for()) en kom ik alles met _root aanspreken met this.
vreemd is dat de item hitboxes WEL worden neergezet en ook werken.
als ik van createTextField bv. _root.createTextField krijg ik een "type mismatch", en zoals het nu is (_root.createTextField(this["item_" + cat + i], wat eerst zonder de this[]) doet die helemaal niets.
het klinkt als een rare uitzondering. heeft iemand een idee?
dit is de (zover relevante) code voor het laden van de XML
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| XMLread.ignoreWhite = true;
XMLread.onLoad = function(success) {
if (success) {
trace("xml loaded");
processXML (XMLread);
trace(items_print.toString());
trace(items_identity.toString());
trace(items_web.toString());
trace(items_3d.toString());
}
}
XMLread.load('base2.xml');
makeButtonInterval = setInterval(makeButtons, 1000, title_names, items_print, items_identity, items_web, items_3d); |
dit is de functie voor het maken en neerzetten van de buttons
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
| function makeButtons(title_names, items_print, items_identity, items_web, items_3d) {
for (j = 0; j<title_names.length; j++) {
for (i = 0; i<_root["items_" + title_names[j]].length; i++) {
cat = title_names[j] + "_";
trace(cat + i);
_root.createTextField(this["item_" + cat + i],(20 + (j * 10) + i),(505 + (j * 110)),(460 + (i * 14)),105,30);
_root["item_" + cat + i].selectable = false;
_root["item_" + cat + i].text = this["items_" + title_names[j]][i];
_root["item_" + cat + i].setTextFormat(format_items);
duplicateMovieClip(basic_button, ["item_" + cat + i + "_hitbox"], (60 + (j * 10) + i))
_root["item_" + cat + i + "_hitbox"]._x = 505 + (j * 110);
_root["item_" + cat + i + "_hitbox"]._y = 460 + (i * 14);
_root["item_" + cat + i + "_hitbox"]._width = 80;
_root["item_" + cat + i + "_hitbox"]._height = 13;
_root["item_" + cat + i + "_hitbox"].onRollOver = function () {
thisName = this._name.split("_");
_root["item_" + thisName[1] + "_" + thisName[2]].colorTo(color_item_highlight, .08, "linear");
}
_root["item_" + cat + i + "_hitbox"].onRollOut = function () {
thisName = this._name.split("_");
_root["item_" + thisName[1] + "_" + thisName[2]].colorTo(0x666666, .7, "linear");
trace (this._name);
}
_root["item_" + cat + i + "_hitbox"].onRelease = function () {
thisName = this._name.split("_");
trace(thisName[1] + thisName[2]);
}
}
}
trace("x" + _root.item_print_1._x);
clearInterval(makeButtonInterval);
} |
eerder had ik de functie zonder XML maar alleen wat arrays niet in een functie (dus gelijk beginnend bij for()) en kom ik alles met _root aanspreken met this.
vreemd is dat de item hitboxes WEL worden neergezet en ook werken.
als ik van createTextField bv. _root.createTextField krijg ik een "type mismatch", en zoals het nu is (_root.createTextField(this["item_" + cat + i], wat eerst zonder de this[]) doet die helemaal niets.
het klinkt als een rare uitzondering. heeft iemand een idee?