Мне было интересно, был ли более эффективный способ изменения свойства SKSpriteNode
в touchesBegan
, чем мой текущий метод. Ниже приведен мой метод:Изменение свойства SKSpriteNode через touchhesBegan
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInNode:self]; SKNode *node = [self nodeAtPoint:location]; if ([node.name isEqualToString:@"Start"]){ for (SKSpriteNode *node2 in [self children]){ if ([node2.name isEqualToString:@"Start"]){ node2.texture = [SKTexture textureWithImageNamed:@"button_beige_pressed"]; } } } ... }
Зачем вам нужно, если ([node.name isEqualToString: @ "Start"]) {и затем if ([node2.name isEqualToString: @ "Start"]) {? –
В отдельном примечании вы должны как можно больше использовать текстуры. Метод textureWithImageNamed загружает текстуры, которые являются дорогостоящей операцией. Возможно, вы можете предварительно загрузить текстуру и просто применить ее позже. – mohkhan
Можете ли вы создать 'SKTexture' вне цикла' for' (а затем назначить 'node2.texture' этой текстуре? Будет ли это лучше? – Gliderman