Итак, в MyScene.m
Я создаю объекты своего Воздушного шара и поставлю их на сцену.Как вызвать метод объекта в касанияхБеан при касании?
for (int i = 0; i < 4; i++) {
Balloon *balloonObject = [[Balloon alloc] init];
balloonObject.position = CGPointMake(50 + (75 * i), self.size.height*.5);
[_balloonsArray addObject:balloonObject];
}
while (_balloonsArray.count > 0) {
[self addChild:[_balloonsArray objectAtIndex:0]];
[_balloonsArray removeObjectAtIndex:0];
}
Это дает мне 4 воздушных шара на моем экране. В файле Balloon.h
у меня есть метод, называемый -(void)shrink
, который я хочу получить на удаленном объекте balloonObject внутри метода -(void)touchesBegan
. Я пробовал этот код ниже, но он дает мне ошибку NSInvalidArgumentException', reason: '-[SKSpriteNode shrink]: unrecognized selector sent to instance 0x17010c210'
.
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
Balloon *node = (Balloon *)[self nodeAtPoint:location];
if ([node.name isEqualToString:@"balloon"]) {
[node shrink];
}
}
Balloon.h
@interface Balloon : SKSpriteNode
-(void)shrink;
@end
Balloon.m
@implementation Balloon
{
SKSpriteNode *_balloon;
}
-(id)init{
self = [super init];
if (self){
_balloon = [SKSpriteNode spriteNodeWithImageNamed:@"balloonPicture"];
_balloon.name = @"balloon";
_balloon.position = CGPointMake(0, 0);
[self addChild:_balloon];
}
return self;
}
-(void)shrink{
// does something
}
Не могли бы вы опубликовать ваши файлы '' Balloon.h' и Balloon.m'? –
Так же, как вы указываете название своих воздушных шаров на воздушный шар '@" ' –
Другим способом приближения к вашей цели было бы однозначно назвать ваши объекты шара, добавить их в массив (как и вы), перечислить массив в найти воздушный шар, касающийся по имени, а затем запустить метод усадки. – sangony