Я уже некоторое время использую Objective-C и набор спрайтов, но всегда использовал один огромный класс для всего. Для этого приложения мне нужно иметь несколько классов. Как я могу иметь класс, скажем, с именем MySprite.m, в котором будет весь код для спрайта, и который сможет добавлять спрайт или вызывать методы внутри MySprite.m в GameScene.m?
Индивидуальный класс для Sprite
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
Спасибо! Я должен сказать, что это, вероятно, лучший ответ, который я когда-либо получал
- person TheCommonGiraffe; 01.01.2015
У меня только одна проблема. Когда я пытаюсь добавить спрайт внутри метода addSprite, используя [self addChild:sprite];, я получаю сообщение об ошибке. Я знаю, что ошибка связана с тем, что я использую эту функцию вне файла GameScene.m, но как мне обойти это?
- person TheCommonGiraffe; 01.01.2015
@TheCommonGiraffe использует [self.scene addChild:sprite];
- person 0x141E; 04.04.2015