2014-07-16 6 views
5

मेरी स्थिति यह है कि मेरे पास GameMenuScene है और उपयोगकर्ता के स्तर को चुनने के बाद, मैं LevelScene प्रस्तुत करना चाहता हूं। लेकिन मैं पिछले GameMenuScene खारिज कर दिया है क्योंकि LevelScene वास्तव में GameMenuScene के @property है और चाहे या नहीं उपयोगकर्ता स्तर पूरा करता LevelScene के @property, जो GameMenuScene उपयोगकर्ता के बाद उपयोग करने में सक्षम होना चाहिए के रूप में सहेजा जा रहा है नहीं करना चाहती स्तर खत्म या बाहर निकलता है। अगर मैं बस presentScene:transition का उपयोग करता हूं, तो GameMenuScene को त्याग दिया जाता है और जानकारी वापस नहीं जा सकती है।पिछले को छोड़ दिए बिना स्प्राइटकिट में एक दृश्य प्रस्तुत करना?

मेरा प्रश्न: क्या पिछले किसी को छोड़कर दृश्यों को ढेर या धक्का देने का कोई तरीका है (अधिमानतः एक संक्रमण एनीमेशन का उपयोग करना)? मुझे एसकेएससीन के लिए ऐप्पल दस्तावेज़ीकरण में इस विशिष्ट उद्देश्य के लिए कोई विधि नहीं मिली।

नोट: एक अन्य प्रश्न का एक और स्टैक ओवरफ्लो उत्तर एक नया UIViewController बनाने का सुझाव देता है, वहां LevelScene प्रस्तुत करें और फिर UIViewController को सामान्य रूप से प्रस्तुत करें। लेकिन मैं उम्मीद कर रहा था कि ऐप्पल प्रलेखन में एक मौजूदा विधि थी कि मैंने UIVIewControllers बनाने के बिना दृश्य को दृश्य रूप से पेश करने के लिए याद किया है।

+0

Kobold किट या बदलाव से धक्का/पॉप जगत कार्यक्षमता है, निकालने/अनुकूल करने के लिए आसान होना चाहिए: https://github.com/KoboldKit/KoboldKit/blob/master/KoboldKit/KoboldKitFree/Framework/View/KKView .m ध्यान दें कि "पृष्ठभूमि" दृश्य सक्रिय नहीं हैं और न ही एक दृश्य है जबकि "हालिया एक के शीर्ष पर धक्का दिया गया है"। – LearnCocos2D

+0

आप दृश्यों को आगे और आगे संवाद करने के लिए एक प्रतिनिधि सेट अप करने का भी प्रयास कर सकते हैं ताकि आपका दूसरा दृश्य (स्तर दृश्य) मेनू दृश्य तक पहुंच सके। साथ ही, आपके सभी अन्य स्तरों का एक ही प्रतिनिधि होगा कि आप प्रत्येक स्तर से जानकारी निकालने के लिए अपने मेनू में एक विधि सेट कर सकते हैं। – romsearcher

उत्तर

2

एसकेएससीन के लिए कोई नेविगेशन नियंत्रक जैसी क्षमता नहीं है जो आपको दृश्यों को धक्का और पॉप करने की अनुमति देती है। आपको अपने दृश्यों को प्रबंधित और पेश करने के लिए कोड लिखना होगा।

यहां एक साधारण दृश्य नियंत्रक कार्यान्वयन है जो आपको अन्य दृश्यों को छोड़ दिए बिना दो दृश्यों (स्वाइप करके) के बीच स्विच करने की अनुमति देता है।

@interface ViewController() 

@property BOOL viewFlag; 
@property SKScene *scene1; 
@property SKScene *scene2; 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Configure the view. 
    SKView * skView = (SKView *)self.view; 
    skView.showsFPS = YES; 
    skView.showsNodeCount = YES; 

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
               initWithTarget:self action:@selector(handleSwipeGesture:)]; 
    swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; 
    [self.view addGestureRecognizer:swipeGesture]; 

    // Create and configure scene 1. 
    SKScene * scene = [MyScene sceneWithSize:skView.bounds.size]; 
    scene.scaleMode = SKSceneScaleModeAspectFill; 

    self.scene1 = scene; 

    // Present the scene 1. 
    [skView presentScene:scene]; 

    // Create and configure scene 2. 
    scene = [MySecondScene sceneWithSize:skView.bounds.size]; 
    scene.scaleMode = SKSceneScaleModeAspectFill; 

    self.scene2 = scene; 
} 

- (void) handleSwipeGesture:(id)sender 
{ 
    SKView * skView = (SKView *)self.view; 
    _viewFlag = !_viewFlag; 
    if (_viewFlag) { 
     [skView presentScene:_scene1]; 
    } 
    else { 
     [skView presentScene:_scene2]; 
    } 
} 

@end 
संबंधित मुद्दे