Я пытаюсь вызвать мой метод newExplosion (в методе touchhesBegan), который находится в моем классе Scene из моего класса ViewController.m. Проблема в том, что он не добавляет SKEmitterNode в представление (что и должен делать метод newExplosion). Он работает, когда метод touchhesBegan находится в классе Scene, но не тогда, когда он вызывается из моего класса ViewController.Метод вызова из класса SKScene
Это мой класс Scene:
#import "Scene.h"
#import <SpriteKit/SpriteKit.h>
@implementation Scene : SKScene
- (void) newExplosion: (float)x : (float) y {
SKEmitterNode *emitter = [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"crouchEffect" ofType:@"sks"]];
emitter.position = CGPointMake(x,y);
[self addChild:emitter];
}
// This works VVVV
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self newExplosion:100 :100];
}
Это SpriteKit связанные вещи в моем классе ViewController.m:
- (void)viewDidLoad{
SKView * skView = _skView;
SKScene * scene = [Scene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];
}
// Doesn't work VVVV
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
Scene * ss = [[Scene alloc] init];
[ss newExplosion:100:100];
}
Я добавил сообщение отладки в моем методе newExplosion, чтобы увидеть, если он фактически запустил его, и он распечатал его. Таким образом, он вызывается, но не добавляет SKEmitterNode в представление.
создать новую сцену с Alloc/инициализации, вам нужно использовать self.scene и бросить его – LearnCocos2D