Comment faire bouger des formes (cercles, carrés, triangles, ...) aléatoirement
apocaalypso
Membre
Bonjour,
Je voudrais faire bouger des formes (cercles, carrés, triangles, etc...) préalablement déclarés dans la fonction drawRect: dans ma vues et en faire disparaà®tre une lorsque l'utilisateur appuie sur dessus.
Comment pourrais-je faire ?
merci d'avance pour votre aide,
@pocalyps0
Je voudrais faire bouger des formes (cercles, carrés, triangles, etc...) préalablement déclarés dans la fonction drawRect: dans ma vues et en faire disparaà®tre une lorsque l'utilisateur appuie sur dessus.
Comment pourrais-je faire ?
merci d'avance pour votre aide,
@pocalyps0
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
Tu fais varier la positon x et y de tes objets en fonction de la position de ton doigt. A chaque changement de coordonnée sur fait un setNeedsDisplay de ta class où tu drawRect afin de redessiner tes objet à leur nouvelle position.
Eh bien à tu fais une fonction rafraà®chissement qui s'appelle à intervalle régulier (NSTimer) et tu fais un random sur x et y tout en oubliant pas le setNeedDisplay avant de quitter la fonction.
Dans ton point h mets ca :
dans ton .m
et tu remplaces
CGContextStrokeEllipseInRect(context, CGRectMake(10, 90, 36, 36));
par
CGContextStrokeEllipseInRect(context, CGRectMake(x, y, 36, 36));
A toi de voir pour la suite
EDIT: C'est juste le L de CGFloat qui était en majuscule.
Je vais me référé à ton post sur ton blog pour faire bouger une boule, c'est vraiment très pratique, un grand merci !
Mais par contre, comment puis-je faire pour faire disparaitre ma forme ou ma boule quand l'utilisateur la touche ?
Merci !
Ton problème est très similaire à celui exposé ici:
http://www.objective-cocoa.org/forum/index.php?topic=3361.0
Pour faire disparaà®tre la forme, qui est stockée comme les autres dans un NSMutableArray, il suffit de la retirer du NSMutableArray:
[formesArray removeObject:laFormeTouchee];
Mais je voudrais détecter la position du doigt de l'utilisateur, vérifié si elle est sur la position de la balle et si oui la faire disparaà®tre. C'est surtout la première étape sur laquelle je bloque.
Essai ça. Ici je suppose que ton objet a ses coordonnée (0,0) en son centre. Sinon dans la plus part des cas c'est en haut a gauche. donc :
Voici le code de ma page en entier, ça peut toujours servir :
Il est bizar ton code (c'est personnel).
En même temps je viens de débuter alors je voudrais bien savoir où il l'est ^^
Je l'ai remplacée par
Mais là la condition se vérifie partout sur l'écran...
Je te l'ai fait plus haut et tu t'en sers même pas
enfin ca devrai marcher quand meme mais tu pourra cliquer ailleur que sur ta balle pour que ca marche lol
[tt]if (CGRectContainsPoint(CGRectMake(coordonnees.x-rayon,coordonnees.y-rayon,2*rayon,2*rayon) , location)) { ... }[tt]
Ou sinon si on veut un test de contenance circulaire, si les balles sont circulaires par exemple, bah il suffit de vérifier si la distance entre le point du toucher et le centre est inférieur au rayon (via pythagore bien sûr)
J'étais persuadé que ça allait marcher et pourtant non. Je ne comprend pas, normalement l'aspect mathématique est vérifié !
Genre fait :
Si ca fait bien tout ca alors le probleme est ailleur.
Ca fait la n ieme fois (bon 3 fois en fait) que je lui dis mais ça n'a pas l'air de vouloir rentrer . Lui meme s'aperçoit en plus que "ça balaye tout l'écran" ...
J'ai essayé ta condition mais elle ne fonctionne pas.
Voici la réponse du NSLog (j'ai essayé de cliquer sur la balle) :
X =-3.000000 | Y =24.000000 || DoigtX =83.000000 | DoigtY =289.953613
Un deuxième essai :
X =-14.000000 | Y =9.000000 || DoigtX =79.000000 | DoigtY =324.953613
Ce que je trouve bizarre aussi c'est qu'il y a une énorme différence entre les coordonnées de la balle et celle du clic.
Tu es bien plus précis avec une souris (trackpad ici) qu'avec un doigt voyons. Moi j'ai pas d'iphone et je fais tout avec le simulateur. Tu es de mauvais foie là quand même. Admettons que c soit dur avec le trackpad, tu n'aurais quand même pas de telle différence de coordonnée ...