2014-10-09 17 views
0

Почему я не могу использовать sceneWithSize: внутри оператора switch? Если я создам объект своей новой игровой сцены за пределами корпуса коммутатора, он отлично работает? Но я переключаю игровые сцены в зависимости от того, какой пользователь выбрал spriteNode. Почему это происходит, и есть ли альтернативный метод делать то, что я пытаюсь сделать?Метод не может использоваться в инструкции Switch?

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     /* Called when a touch begins */ 
     UITouch *touch = [touches anyObject]; 
     CGPoint location = [touch locationInNode:self]; 
     SKNode *node = [self nodeAtPoint:location]; 
     NSLog(@"Level Selected: %@", node.name); 
     int x = [node.name intValue]; 

     switch (x) { 
      case 1: 
       // if I move this code outside the switch statement it works? 
       LevelOne *newscene = [LevelOne sceneWithSize:self.size]; // here is where I get an expected expression error? 
       //[self.view presentScene:newscene transition:[SKTransition doorsOpenVerticalWithDuration:1]]; 
       break; 

      default: 
       break; 
     } 
    } 

ответ

4

Это не из-за вызова метода, это потому, что вы не можете создать case с объявлением переменной. Вы должны обернуть весь блок в фигурных скобках, например:

switch (x) { 
     case 1: { 
      // if I move this code outside the switch statement it works? 
      LevelOne *newscene = [LevelOne sceneWithSize:self.size]; // here is where I get an expected expression error? 
      //[self.view presentScene:newscene transition:[SKTransition doorsOpenVerticalWithDuration:1]]; 
      break; 
     } 

     default: 
      break; 
    } 
+0

Технического объяснение: http://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a- switch-statement – Cyrille

+0

whoops thanks Я обвиняю фрагмент кода кода Xcode по умолчанию для оператора case: P –

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