2014-05-02 86 views
0

使用SpriteKit,我有一個場景,XYZMyScene,當我在屏幕上觸摸時呈現另一場景,XYZMyOtherScene。沒有擡起我的手指,當我移動手指時,我想要觸發touchesMoved:withEvent:,但直到我第一次擡起手指,然後觸摸新場景並四處移動時,它纔會發射。如何在SpriteKit中呈現場景後立即接收觸摸事件?

是否有可能在不首先舉起手指的情況下讓它開火?

下面是一些簡單再生產代碼:

// XYZMyScene.h 

#import <SpriteKit/SpriteKit.h> 

@interface XYZMyScene : SKScene 

@end 

// XYZMyScene.m 

#import "XYZMyScene.h" 
#import "XYZMyOtherScene.h" 

@implementation XYZMyScene 

-(id)initWithSize:(CGSize)size {  
    if (self = [super initWithSize:size]) {   
     self.backgroundColor = [SKColor orangeColor]; 
    } 
    return self; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {  
    XYZMyOtherScene *otherScene = [[XYZMyOtherScene alloc] initWithSize:self.frame.size]; 
    [self.view presentScene:otherScene]; 
} 

@end 

// XYZMyOtherScene.h 

#import <SpriteKit/SpriteKit.h> 

@interface XYZMyOtherScene : SKScene 

@end 

// XYZMyOtherScene.m 

#import "XYZMyOtherScene.h" 

@implementation XYZMyOtherScene 

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) {   
     self.backgroundColor = [SKColor blueColor]; 
    } 
    return self; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"moving!"); 
} 

@end 
+0

我建議你將XYZMyScene的元素移動到XYZMyOtherScene並處理來自同一場景的所有內容。 – ZeMoon

+0

@akashg - 我不知道。它聽起來像它反駁了我所瞭解的有關分工和麪向對象的一切。有一個更好的解決方案... – akivajgordon

+0

那麼,根據我對XYZMyScene的瞭解,它並沒有太多的工作。 – ZeMoon

回答

0

你不能從一個類觸摸攜帶到另一個地方。

不知道你的代碼或你對這個動作的最終意圖,我唯一的建議是你爲你的XYZMyOtherScene類設置一個類屬性,並讓它攜帶你需要的任何數據來完成你的任務。

+0

感謝您的建議。目前,我沒有我想要傳送的數據。非常多,我想在手指離開屏幕時顯示一個場景,然後在手指在屏幕上時顯示另一個場景。有沒有辦法強制'XYZMyOtherScene'開始監聽touchesMoved:withEvent?如果是這樣,也許我可以在'didMoveToView:'方法中調用它... – akivajgordon

相關問題