2016-07-21 3 views

Antwort

0

Ich denke, Sie haben das Value Objekt missverstanden. Wie in der Dokumentation geschrieben Sie verknüpft:

cocos2d :: Wert ein Wrapper-Klasse für viele Primitive ist ([...] und std :: string) plus [...]

Also wirklich Value ist ein Objekt, das eine Reihe von anderen Arten von Variablen umschließt, die cocos2d-x zu lose-typisierte Strukturen wie die ValueMap (ein Hash der Zeichenfolgen zu Values - wo jeder Value kann eine andere Art von Objekt sein kann) und ValueVector (eine Liste von Values).

Zum Beispiel, wenn Sie einen Konfigurations-Hash mit Schlüsseln haben wollten, die alle Zeichenfolgen sind, aber mit einer Reihe von verschiedenen Werten - in Vanille C++ müssten Sie für jede Art von Wert eine separate Datenstruktur erstellen zu retten, aber mit Value können Sie einfach tun:

unordered_map<std::string, cocos2d::Value> configuration; 

configuration["numEnemies"] = Value(10); 
configuration["gameTitle"] = Value("Super Mega Raiders"); 

Es ist nur ein Mechanismus einige lose Typisierung in C++ zu erstellen, die eine stark typisierte Sprache.

std::string name = "Vidur"; 
Value nameVal = Value(name); 

Und dann später abrufen mit:

Sie einen String in einen Wert mit so etwas wie dies speichern

std::string retrievedName = nameVal.asString(); 

Wenn Sie eine Value als die falsche Art zu analysieren versuchen, es wird einen Fehler in der Laufzeit werfen, da dies nicht etwas ist, was der Compiler herausfinden kann.

Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.