2013-11-21 1 views
0

Я пытаюсь написать метод, чтобы сделать выше. My Texture Atlas содержит более 500 текстур. Когда я храню извлеченные текстуры в новом массиве и записываю его описание, массив содержит мои правильные имена 3 Текстуры PLUS для всех текстур, содержащихся в оригинале Atlas. Каждый из них относится к «MissingResource.png» (128 x 128) ».извлечение выделения из текстуры из атласа текстуры

Мой вопрос: Как я могу ТОЛЬКО хранить 3 текстуры, которые я хочу в новом массиве? Вот код:

-(void)createSelectedTexturesWith:(NSString*)ImageName; 
{ 
int bgCount = 1; 

NSMutableString *tempstring = [NSMutableString stringWithString:ImageName]; 
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"textures"]; 
NSMutableArray *Leveltextures = [[NSMutableArray alloc]init]; 

NSUInteger numImages = atlas.textureNames.count; 

for (int i=1;i <= numImages; i++) { 
    [tempstring appendFormat:@"_%02d.png",bgCount]; 
    NSString *textureName = [NSString stringWithString:tempstring]; 
    SKTexture *temp = [atlas textureNamed:textureName]; 
    [Leveltextures addObject:temp]; 
    [tempstring setString:ImageName]; 
    bgCount++; 
} 

NSLog(@"Leveltextures Content: %@",[Leveltextures description]); 

}

ответ

0

Не уверен, что я понимаю, что вы хотите. Но если я правильно ее понимаю, почему бы вам просто не проверить, соответствует ли префикс textureName вашему imageName, а только создавать текстуру и добавлять в массив только в этом случае?

0

Спасибо прототипу, что сделал это для меня. Хотя код, возможно, не слишком изящный, вот он. Может быть, это помогает кому-то другому.

-(void)createSelectedTexturesWith:(NSString*)ImageName; 
{ 
    bgCount=1; 

    NSMutableString *tempstring = [NSMutableString stringWithString:ImageName]; 
    SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"textures"]; 
    NSMutableArray *Leveltextures = [[NSMutableArray alloc]init]; 
    NSArray *atlasArray = [atlas textureNames]; 

    for (NSString *string in atlasArray) { 

     if ([string hasPrefix:ImageName]){ 

     [tempstring appendFormat:@"%02d.png",bgCount]; 
     NSString *textureName = [NSString stringWithString:tempstring]; 
     SKTexture *temp = [atlas textureNamed:textureName]; 
     [Leveltextures addObject:temp]; 
     [tempstring setString:ImageName]; 
     bgCount++; 
     } 
    } 

    NSLog(@"Leveltextures Content: %@",[Leveltextures description]); 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^