PDA

Volledige versie bekijken : functie doet alles vertragen


FredericCox
%Europe/Berlin %970 %2005, 00:17
Ik heb een probleem. In een array staan spelersnamen die via xml zijn ingeladen. Door een functie getPlayerName(PlayerID) kan ik via het ID(staat in andere array) de spelersnaam oproepen. Dit werkt perfect als ik bijvoorbeeld dat na een OnRelease opvraag.

Maar in een for blijkt het niet te lukken.

//Maak scoresheet
for(i=0;i<=arr_i.length;i++){

trace(arr_EventID[i] + "| " + arr_Minute[i] + "' : " + getPlayerName(SubjectPlayerID))



}


}
// Einde datum voorbij wedstrijdstart
eval("LiveBroadcast"+Slot).matchloader._visible = false;
}
//}
//end viewlive



function getPlayerName(PlayerID) {
for (i=0; i<=1001; i++) {
if (PlayerID.toString() == PlayerID_arr[i].toString()) {
return PlayerName_arr[i];
break;
}
}
}


Als ik de functie in die for niet roep doet ie alles goed. Roep ik em wel aan dan krijg ik 1 keer een item voor de scoresheet. Zéér vreemd weet iemand een oplossing? Kan die break er iets mee te maken hebben?

raidho
%Europe/Berlin %977 %2005, 00:27
beste oplossing: maak 1 array met players objecten erin (heb je alles in een)
--
maar je zal waarschijnlijk wel aan die twee array's vast zitten;
indien die array's op dezelfde manier zijn gevuld (vanuit 1 xml bestand) hoef je geen zoekopdracht te doen , zoiets zou het dan worden:

for(i=0;i<=arr_i.length;i++){
trace(arr_EventID[i] + "| " + arr_Minute[i] + "' : " + playerID_arr[i].toString())
}

--
indien je wel twee ongelijke array's hebt, dan heb je inderdaad een zoekopdracht nodig;
in antwoord op je vraag -> de break zorgt ervoor dat bij de eerste match je functie niet verder gaat.

mateo)
%Europe/Berlin %981 %2005, 00:33
ehm..
1) waar wordt SubjectPlayerID vandaan gehaald en geupdate?
2) waarom i < 1001 in plaats van i < PlayerID_arr.length?
3) break is niet nodig. de return is genoeg. met de return spring je uit de for loop en de functie

FredericCox
%Europe/Berlin %071 %2005, 02:42
beste oplossing: maak 1 array met players objecten erin (heb je alles in een)
--
maar je zal waarschijnlijk wel aan die twee array's vast zitten;
indien die array's op dezelfde manier zijn gevuld (vanuit 1 xml bestand) hoef je geen zoekopdracht te doen , zoiets zou het dan worden:

for(i=0;i<=arr_i.length;i++){
trace(arr_EventID[i] + "| " + arr_Minute[i] + "' : " + playerID_arr[i].toString())
}

--
indien je wel twee ongelijke array's hebt, dan heb je inderdaad een zoekopdracht nodig;
in antwoord op je vraag -> de break zorgt ervoor dat bij de eerste match je functie niet verder gaat.


In PlayerID_arr staan de ID's de namen staan in PlayerName_arr (i is zelfde)


De SubjectPlayerID wordt via xml binnengehaald en verschilt telkens

FredericCox
%Europe/Berlin %071 %2005, 02:43
ehm..
1) waar wordt SubjectPlayerID vandaan gehaald en geupdate?
2) waarom i < 1001 in plaats van i < PlayerID_arr.length? Lost probleem niet op
3) break is niet nodig. de return is genoeg. met de return spring je uit de for loop en de functie


Ik heb dus een zoekopdracht nodig maar die functie wordt niet snel genoeg uitgevoerd in een for, zie echt geen oplossing en dat is een ramp

FredericCox
%Europe/Berlin %078 %2005, 02:52
Ok dit is de code die juist was(SubjectPlayerID bestond niet :))

//Maak scoresheet
for(i=0;i<arr_i.length;i++){

trace(arr_EventID[i] + "| " + arr_Minute[i] + "' : " + getPlayerName(arr_PlayerID[i]))

}


}
// Einde datum voorbij wedstrijdstart
eval("LiveBroadcast"+Slot).matchloader._visible = false;
}
//}
//end viewlive
function getPlayerName(PlayerID) {
trace("Naam halen voor " + PlayerID)
for (i=0; i<PlayerID_arr.length; i++) {
if (PlayerID.toString() == PlayerID_arr[i].toString()) {
return PlayerName_arr[i];
}


Nu krijg ik

Naam halen voor 60788838
511| 1' : Miljenko Korolija


Da's goed, maar nu stopt ie, hij doet de for precies maar 1x terwijl hij meer moet doen

FredericCox
%Europe/Berlin %081 %2005, 02:57
Ow domme fout:)

Naam halen voor 25508105
121| 32' : Stefan Thörnen
Naam halen voor 17680618
131| 35' : Pavao Javoran
Naam halen voor 25508105
133| 41' : Stefan Thörnen
Naam halen voor 5015819
510| 78' : Mikael Flinklius
Naam halen voor 30480396
510| 86' : Paweł Szydlik


Hij doet et goed nu had twee for's met i geteld. De ene veranderd in for(r=0... en dan werkt het

SaphuA
%Europe/Berlin %245 %2005, 06:53
Mag ik weten waarom je niet een object gebruikt?
var player_id_ob = {};
player_id_ob.id_0 = [18, "bert", "middenvelder", "ananas"];
player_id_ob.id_1 = [37, "lisa", "spits", "appel"];
player_id_ob.id_2 = [12, "mark", "keeper", "banaan"];
function getPlayerName(PlayerID) {
trace("Naam halen voor id: "+PlayerID);
return player_id_ob["id_"+PlayerID][1];
}
trace(getPlayerName(1));
Veel minder CPU gebruik en een stuk overzichtelijker.