Если вы говорите о создании динамически именуемых переменных hexagon1
, hexagon2
и т. Д. Во время выполнения, я не думаю, что это возможно. Однако вы можете генерировать эти имена в виде строк и использовать их в качестве ключей к словарю, который будет содержать ваши спрайты. Что-то вроде:
hexagonSprites_ = [[NSMutableDictionary alloc] init];
NSArray *hexPositions = [[itemPositions valueForKey:myString] valueForKey:@"hexposition"];
int hexCount = [hexPositions count];
for (int i = 0; i < hexCount; i++) {
NSString *key = [NSString stringWithFormat:@"hexagon%d",i];
CCSprite *sprite = .... // generate sprite here
[hexagonSprites_ setObject:sprite forKey:key];
}
Кроме того, вместо того, чтобы хранить координаты в виде словаря, вы можете сохранить его в виде строки {x,y}
что-то вроде:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>level1</key>
<dict>
<key>hexposition</key>
<array>
<string>{105,160}</string>
<string>{172.5,199.5}</string>
<string>{240,238}</string>
<string>{307.5,199.5}</string>
</array>
</dict>
</dict>
</plist>
Затем используйте функцию CGPointFromString(NSString *string)
, чтобы преобразовать ее в CGPoint:
CGPoint location = CGPointFromString([hexPositions objectAtIndex:i]);