2009-02-19 5 views
4

Dans mon jeu, si je joue plusieurs fois à un jeu en particulier, mes touches ont besoin de plus de temps pour être détectées. Il stocke toutes les touches, puis applique ces touches en même temps.Pourquoi la détection des touches devient-elle plus lente et plus lente?

Quelqu'un peut-il me dire quel est le problème?

En touchesBegan j'ai écrit:

if (CGRectContainsPoint([tapView frame], [touch locationInView:self]) 
    && tapView.alpha == 1) { 
    [self callTapCode]; 
} 

Ce code de touchesEnded. Si je tapote et relâche le tapé, il montre un événement de tapotement.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (checkTap == TRUE && tapView.alpha == 1) 
     tap_effect_view.alpha = 0; 
} 

- (void)callTapCode { 
    // Move player code by 6 pixels 
    // not possible to write all code 
} 

En tapView je tapote en continu. callTapCode déplace le lecteur de six pixels. Mais après un certain temps mes touches ont détecté très lentement, de sorte que le joueur a l'air de sauter. J'ai joué le jeu en continu 15 à 16 fois.

+0

Avez-vous un échantillon de code réduit qui montre les éléments de base du problème? – mmcdole

+0

dans touchesBegan i écrire if (CGRectContainsPoint ([trame appuyez sur Afficher], [touche locationInView: self]) && tapView.alpha == 1) { \t \t \t [self callTapCode]; \t} Dans tapView i m taper en continu. Méthode callTapCode déplace l'utilisateur Player de six pixels. Mais après quelque temps mes touches détectées très lent. – Jyotsna

+0

alors le joueur a l'air de sauter. Je ai joué le jeu en continu 15 à 16 fois – Jyotsna

Répondre

0

Essayez de rechercher des fuites de mémoire. Peut-être que l'iPhone doit beaucoup utiliser la mémoire virtuelle.

+0

Dans mon jeu, lorsque je tapote, il y a un joueur utilisateur. quand je tape sur tapView une fois qu'il déplace le joueur de 6 pixels. Combien de temps je l'ai tapé déplace le joueur. Mais après quelques temps signifie que si je joue à mon jeu 16 à 18 fois, il détecte le robinet très lent. – Jyotsna

+0

Il applique tout le robinet restant au temps sur le joueur afin que le joueur ressemble à sauter. pour vérifier si les processeurs sont lents, j'appelle simplement le même code de touche dans la minuterie et exécute le jeu de 20 à 25 fois mais ça fonctionne bien. Signifie que ce n'est pas une question de processeur lent, alors pouvez-vous m'aider? – Jyotsna

+0

Libérez-vous les touches enregistrées? Et comment le faites-vous? –

1

Vous pourriez travailler à travers ce tutorial pour apprendre à utiliser les Leaks Instrument. Cela fait partie de la suite Instruments fournie avec Xcode, qui vous aidera, entre autres, à détecter les fuites de mémoire et les problèmes de performances généraux de votre application.

+0

Oui, je l'utilise aussi, mais cela ne fait pas beaucoup de différence – Jyotsna

+0

Que rapporte une fuite lorsque vous créez des événements tactiles (lorsque vous touchez l'écran)? Je vous recommande de passer par le tutoriel afin que vous puissiez apprendre cet outil. C'est vraiment très utile. –

1

J'ai trouvé la solution à mon problème. Dans mon jeu, j'avais activé le tapView.multipleTouchEnabled = TRUE

tapView est la vue où je tapais continuellement.

Lorsque je le fais FALSE cela fonctionne.

à savoir

tapView.multipleTouchEnabled = FALSE; 

Je ne sais comment exactement. Mais ça fonctionne.

Merci pour les réponses.

Questions connexes