PDA

Volledige versie bekijken : TypeError: application.clients[i] has no properties


ethereal
%Europe/Berlin %100 %2005, 03:25
Hallo.

Een klein beetje hulp kan ik wel even gebruiken :(
ik heb de volgende code. voor flashcom gedicht.


application.onConnect = function(newClient, name, pass, color) {
NetServices.setDefaultGatewayUrl("http://localhost/<CENSUUR>/deurtje.php");
var gatewayConnection = NetServices.createGatewayConnection();
var service = gatewayConnection.getService("login", this);


var found = false;
for (var i = 0; i<application.clients.length; i++) {
if ((application.clients[i].name == name) && (!found)) { <--- hiero dus found = true;
}
}
if (!found) {


Alles lijkt goed tegaan maar bij de tweede client komt de server het volgende melden!!

line 21: TypeError: application.clients[i] has no properties

Ik snap hier even helemaal niks van. ik wil alleen weten of de Nieuwe client al bekend is op de server
Grtz.

Ethereal

alain_raap
%Europe/Berlin %919 %2005, 23:03
Je moet de properties eerst aan het object toevoegen bij de Connect,
dus newClient.name = name, daarna kun je er in de for lus naar verwijzen, dat is volgens mij de oplossing (heb het zelf ook zo werken bij een server-side applicatie)

Dauntless
%Europe/Berlin %925 %2005, 23:12
Lijkt me eigelijk straf dat je eerst zelf die property moet gaan toekennen, om hem daarna te vergelijken met een andere var ? :S

alain_raap
%Europe/Berlin %935 %2005, 23:27
newClient is het nieuwe object dat in FlashCom van de client bij de connect binnenkomt, application.clients zijn alle reeds aanwezige connecties op de server.
Als je extra attributen meegeeft aan de server, moet je die eerst ergens opslaan voordat je ze uitvraagt, dat bedoelde ik te zeggen.

De Kale
%Europe/Berlin %403 %2005, 10:41
server side actionscript (ssas) is iets strenger dan as1...
properties die niet bestaan, maar waar je wel een waarde van wil opvragen geven een runtime error....

je zult dus gewoon beter met je vars om moeten gaan ;)

alain_raap
%Europe/Berlin %893 %2005, 22:25
Dat is wat ik eigenlijk bedoelde, maar je legt het iets duidelijker uit. Misschien nog wat code ter verduidelijking (de parameters zijn bij de onConnect functie meegegeven):

newClient.id = id;
newClient.name=name ;
newClient.nickname = nickname;

// Accept the new client's connection
application.acceptConnection(newClient);
Later in de code als je de clients uitvraagt, bijvoorbeeld bij disconnect (client.name property is dan bekend):

for ( var i =0; i < application.clients.length; i++)
{
trace("client.name:" + application.clients[i].name)
if ( application.clients[i].name == myName)
{
doe iets;
}
}

De Kale
%Europe/Berlin %738 %2005, 18:42
beter:
var client = application.clients[i];
if(typeof(client.name) != 'undefined' && client.name != undefined){
//doeiets
}