Индивидуальный класс для Sprite

Я уже некоторое время использую Objective-C и набор спрайтов, но всегда использовал один огромный класс для всего. Для этого приложения мне нужно иметь несколько классов. Как я могу иметь класс, скажем, с именем MySprite.m, в котором будет весь код для спрайта, и который сможет добавлять спрайт или вызывать методы внутри MySprite.m в GameScene.m?


person TheCommonGiraffe    schedule 31.12.2014    source источник
comment
Вы должны найти хорошую книгу или серию онлайн-уроков. Взгляните на Хорошие ресурсы для изучения ObjC. Книги Big Nerd Ranch превосходны, и многим людям нравится Стэнфордский курс iOS в iTunes U. Удачи!   -  person jscs    schedule 01.01.2015


Ответы (1)


Вот пример создания и вызова методов в новом классе:

1) Создайте новый класс с именем MySprite с методом init

#import "MySprite.h"

@implementation MySprite

- (id) init {
    if (self = [super init]) {
        // Add initialization code here, as needed
    }
    return self;
}

- (void) addSprite {
    // Do something here

}

@end

2) В MySprite.h объявить методы и свойства

#import <SpriteKit/SpriteKit.h>

@interface MySprite : NSObject

// Declare this if you want to add nodes to the scene in your SKScene subclass
@property (nonatomic, weak) SKScene *scene;

// Declare methods to be called externally
- (void) addSprite;

@end

3) В GameScene.m выделите и инициализируйте экземпляр MySprite

MySprite *mySprite = [[MySprite alloc] init];
mySprite.scene = self;

// Call a MySprite method
[mySprite addSprite];
person 0x141E    schedule 01.01.2015
comment
Спасибо! Я должен сказать, что это, вероятно, лучший ответ, который я когда-либо получал - person TheCommonGiraffe; 01.01.2015
comment
У меня только одна проблема. Когда я пытаюсь добавить спрайт внутри метода addSprite, используя [self addChild:sprite];, я получаю сообщение об ошибке. Я знаю, что ошибка связана с тем, что я использую эту функцию вне файла GameScene.m, но как мне обойти это? - person TheCommonGiraffe; 01.01.2015
comment
@TheCommonGiraffe использует [self.scene addChild:sprite]; - person 0x141E; 04.04.2015