2015-11-08 2 views
2

У меня есть собственный объект SKSpriteNode и вы хотите вызвать в нем собственный метод «Установить значения по умолчанию».Вызов пользовательского метода внутри SKSpriteNode не работает

#import <SpriteKit/SpriteKit.h> 

@interface Platform : SKSpriteNode 

- (instancetype)initWithDynamicPlatform; 
- (void)setDefaults; 

@end 

И в .m файл

#import "Platform.h" 

@implementation Platform 

- (instancetype)initWithImageNamed:(NSString *)name { 
if (self == [super initWithImageNamed:name]) { 
    NSLog(@"Initiated Platform"); 
} 
return self; 
} 

- (instancetype)initWithDynamicPlatform { 

if (self == [super initWithImageNamed:@"Platform2"]) { 
    NSLog(@"Initiated Platform"); 
} 

[self setDefaults]; 

return self; 
} 

- (void)setDefaults { 

/** 
* Set the name 
*/ 

self.name = @"Platform"; 

/** 
* Set the effect of gravity on the platform 
*/ 

self.physicsBody.affectedByGravity = NO; 
self.physicsBody.dynamic = NO; 


} 

@end 

Проблема заключается в том, что из файла SKScene я не могу получить доступ к пользовательскому методу.

- (void)loadDynamicPlatform { 

SKSpriteNode *spritePlatform = [[Platform alloc] initWithDynamicPlatform];  

[spritePlatform setDefaults]; 

[self addChild:spritePlatform]; 
[self movePlatform:spritePlatform]; 

} 

Я получаю сообщение об ошибке

«/Users/****/Desktop/Apps/****/****/GameScene.m:142:21: нет видимых @interface для «SKSpriteNode» заявляет селектор «SetDefaults»»

Любая идея, почему я не могу получить доступ к этому. Я уверен, что правильно настроил его.

+0

ли вы '#import "Platform.h"' в 'GameScene.m'? – NobodyNada

+0

Да, это там, в файле GameScene.m – ORStudios

ответ

4

Вы должны объявить переменную 'Платформа' или бросить 'SKSpriteNode' к 'Платформа':

Platform *spritePlatform = [[Platform alloc] initWithDynamicPlatform];  

[spritePlatform setDefaults]; 
+0

Ahh спасибо за это. Теперь я изменил код, и он работает. – ORStudios

+0

Отлично. Рад был помочь – Stefan

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