2014-09-05 6 views
0

Я пытаюсь вызвать мой метод 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 в представление.

+0

создать новую сцену с Alloc/инициализации, вам нужно использовать self.scene и бросить его – LearnCocos2D

ответ

0

Вы создаете новую сцену, каждый раз, когда вы касаетесь экрана, но вы никогда не добавить это мнение, я думаю, что вы хотите сделать что-то вроде этого

//In view controller interface add 
{ 
    Scene * _scene; 
} 

//In implementation, change the following 
- (void)viewDidLoad{ 
    SKView * skView = _skView; 
    _scene = [Scene sceneWithSize:skView.bounds.size]; 
    _scene.scaleMode = SKSceneScaleModeAspectFill; 
    [skView presentScene:_scene]; 
} 
// Doesn't work VVVV 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    [_scene newExplosion:100:100]; 
} 
+0

Работало отлично! PS: SKScene должен быть сценой (в реализации). – Kyle

+0

Не проблема, я изменил его, чтобы отразить ваш комментарий. Рад, что это сработало для вас – Knight0fDragon

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