我想從我的ViewController.m類調用我的Scene類中的newExplosion方法(在touchesBegan方法中)。問題是它不會將SKEmitterNode添加到視圖(這是newExplosion方法應該執行的操作)。它在touchesBegan方法在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];
}
這是我ViewController.m類SpriteKit相關的東西:
- (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添加到視圖。
創建與分配/初始化一個新的場景,你需要使用self.scene並投它 – LearnCocos2D 2014-09-05 07:06:27