Verzögerung bei Sprite Kit App

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verzögerung bei Sprite Kit App

    Hallo,

    1.)
    In meiner App tritt eine Verzögerungen auf, wenn ich einen UIActivityViewController von einer SKScene öffne. (Dauer ca 1-2 Sekunden)

    2.) Wenn von der MenuScene in die GameScene gewechselt wird, gibts es eine Verzögerung. (Dauer ca. 2-3 Sekunden)

    Allerdings treten diese Verzögerungen nur beim ersten Aufruf auf, danach funktioniert alles ohne Verzögerung.
  • GameViewController.m

    Quellcode

    1. - (void)viewDidLoad
    2. {
    3. [super viewDidLoad];
    4. SKView * skView = (SKView *)self.view;
    5. SKScene * scene = [Menu sceneWithSize:skView.bounds.size];
    6. scene.scaleMode = SKSceneScaleModeAspectFill;
    7. [skView presentScene:scene];
    8. }
    9. - (void) openShare
    10. {
    11. int highScore = [self highScoreAbruf];
    12. NSString *shareText= [NSString stringWithFormat:@"The HIghScore is %i", highScore];
    13. NSArray *itemsToShare = @[shareText];
    14. UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
    15. [self presentViewController:activityVC animated:YES completion:nil];
    16. }
    17. - (int) highScoreAbruf
    18. {
    19. NSUserDefaults *myHighScore = [NSUserDefaults standardUserDefaults];
    20. int highScore = [myHighScore integerForKey:@"Score"];
    21. return highScore;
    22. }
    Alles anzeigen
  • Menu.m

    Quellcode

    1. -(id)initWithSize:(CGSize)size {
    2. if (self = [super initWithSize:size])
    3. {
    4. [self screenSize];
    5. self.physicsWorld.gravity = CGVectorMake(0.0f, 0.0f);
    6. background = [SKSpriteNode spriteNodeWithImageNamed:[NSString stringWithFormat:@"%@Hintergrund_Menu.png",stringDevice]];
    7. background.position = CGPointMake(ScreenViewWidth/2, ScreenViewHeight/2);
    8. background.size = bgSize;
    9. [self addChild:background];
    10. [self ButtonsCreate];
    11. Start = NO;
    12. }
    13. return self;
    14. }
    15. - (void) ButtonsCreate
    16. {
    17. PlayButton = [SKSpriteNode spriteNodeWithImageNamed:[NSString stringWithFormat:@"%@Play.png",stringDevice]];
    18. PlayButton.size = ButtonSize;
    19. PlayButton.position = CGPointMake(ScreenViewWidth/2,ScreenViewHeight*0.65);
    20. PlayButton.name = @"PlayButton";
    21. PlayButton.zPosition = 1;
    22. [self addChild:PlayButton];
    23. PlayButtonPressed = [SKSpriteNode spriteNodeWithImageNamed:[NSString stringWithFormat:@"%@Play_Pressed.png",stringDevice]];
    24. PlayButtonPressed.size = ButtonPressedSize;
    25. PlayButtonPressed.position = CGPointMake(ScreenViewWidth/2,ScreenViewHeight*0.65);
    26. PlayButtonPressed.name = @"PlayButton";
    27. PlayButtonPressed.zPosition = 1;
    28. [self addChild:PlayButtonPressed];
    29. PlayButtonPressed.hidden = YES;
    30. // Sharebutton is create a the same kind like the PlayButton
    31. }
    32. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    33. UITouch *touch = [touches anyObject];
    34. CGPoint location = [touch locationInNode:self];
    35. SKNode *node = [self nodeAtPoint:location];
    36. if ([node.name isEqualToString:@"PlayButton"])
    37. {
    38. PlayButton.hidden = YES;
    39. PlayButtonPressed.hidden = NO;
    40. [self restartButtonPressed];
    41. //[self performSelector:@selector(restartButtonPressed) withObject:nil afterDelay:(0.5)];
    42. }
    43. if ([node.name isEqualToString:@"ShareButton"])
    44. {
    45. ShareButton.hidden = YES;
    46. ShareButtonPressed.hidden = NO;
    47. NSTimer *buttonTimer = [NSTimer scheduledTimerWithTimeInterval:(0.5)
    48. target:self
    49. selector:@selector(ShareMethod)
    50. userInfo:NULL
    51. repeats:NO];
    52. }
    53. }
    54. - (void) restartButtonPressed
    55. {
    56. [self.scene.view presentScene:[GameMyScene sceneWithSize:self.size]];
    57. }
    58. - (void) ShareMethod
    59. {
    60. GameViewController *vc = self.view.window.rootViewController;
    61. [vc openShare];
    62. [self rateButtonUnPressed];
    63. }
    64. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    65. {
    66. [self ShareButtonUnPressed];
    67. }
    68. - (void) ShareButtonUnPressed
    69. {
    70. if (ShareButton.hidden == YES && ShareButtonPressed.hidden == NO)
    71. {
    72. ShareButton.hidden = NO;
    73. ShareButtonPressed.hidden = YES;
    74. }
    75. }
    Alles anzeigen
  • Ich erstelle eine SKScene in der ViewdidLoad-Methode // (MenuScene)

    Danach initialisiere ich die Scene, initWithSize-Methode.

    Und erstelle die Buttons mit der Methode ButtonsCreate.

    In touchesBeagan prüfe, wo eine Berührung auftritt, danach wenn es der Playbutton ist wird die Buttonanimation durchgeführt und die neue SkScne geladen.

    Wenn der ShareButton ausgewählt wird kommt zuerst eine Buttonanimation und danach wird der UIViewController erstellt und presentiert.

    Die Verzögerung tritt nach der touches Began Methode auf.