Oulah, je viens d'avoir un problème plus grave. Quand je teste le simulator en 3.0, Xcode m'affiche 122 erreurs alors qu'en 2.2.1 et inférieur tout marche sans problème. Voici les erreurs : http://paste.ideaslabs.com/show/iIK9NyrHUG
Quelqu'un pourrait-il savoir d'où viennent ces erreurs ?
J'ai finit par recréer un projet sous Xcode et retransférer tous les fichier dans celui-ci.
Il ne me reste maintenant plus qu'un problème : gérer correctement le mouvement de la balle (CGRect). En effet, elle rebondit bien sur les bords mais d'une manière non-normal d'un point de vue physique (elle cogne le bord droit en venant du haut et au lieu de repartir vers le bas repart vers le haut). Elle effectue aussi quelquefois un soubresaut. Voici ma fonction qui est appeller toutes les 0.05 secondes :
-(void)drawRect:(CGRect)rect<br />{ <br /> CGContextRef context = UIGraphicsGetCurrentContext();<br /> <br /> // Settings for the glow effect<br /> float glowWidth = 20.0;<br /> <br /> // Choosing between two colors to choose<br /> //NSInteger colorRand = 1 + arc4random() % 2;<br /> <br /> // Color for a blue-violet color<br /> float colorValues[] = { 0.67058824, 0.51764706, 0.98431373, 1.0 };<br /> <br /><br /> CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();<br /> CGColorRef glowColor = CGColorCreate(colorSpace, colorValues);<br /> CGContextSetShadowWithColor(context, CGSizeMake(0.0, 0.0), glowWidth, glowColor);<br /><br /> // Fill with a clear violet-blue color<br /> CGContextSetRGBFillColor(context, 0.67058824, 0.51764706, 0.98431373, 1.0);<br /> <br /> CGContextFillEllipseInRect(context, blushBall);<br /> CGContextFillPath(context);<br />}
Le morceau intéressant de mon awakeFromNib :
// Generate random numbers which will be the coordonates of the circle at start<br /> NSInteger wx = 20 + arc4random() % 100;<br /> NSInteger wy = 20 + arc4random() % 200;<br /> <br /> speed = 2;<br /> <br /> CGPoint center = {wx, wy};<br /> float radius = CIRCLE_DIAM * 0.5;<br /> <br /> // We init the first circle<br /> blushBall = CGRectMake(center.x-radius, center.y - radius, CIRCLE_DIAM, CIRCLE_DIAM);<br /> <br /> [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(randomMove) userInfo:nil repeats:YES];<br />
Je ne sais absolument pas comment faire rebondir ce CGRect (ici blushBall) correctement. Avec une UIImageView il suffisait de donner à la coordonnée sa valeur opposée mais là je ne sais absolument pas.
Si quelqu'un aurait une petite astuce ou pourrait m'éclairer je lui en serait vraiment très reconnaissant.
C'est le cas de le dire... il y a un gros problème d'algorithmie là .
C'est exactement le même principe qu'avec une image, et tout aussi facile, voire plus pourtant. - On touche un bord vertical -> le signe de l'abscisse du vecteur vitesse s'inverse - On touche un bord horizontal -> le signe de l'ordonnée du vecteur vitesse s'inverse
J'ai trouvé la solution. J'ai bien suivi ton conseil et j'ai re-re-vu le (très bon) tuto de Ceetix : http://ceetix.wayfarer.fr/?p=75 et j'ai introduit le CGPoint coordonnees et inverser leur valeur pour mouvoir mes balles et elles rebondissent bien comme il le faut !
Bon ben c'est triste à dire mais je pense que mon problème est définitivement résolu.
Réponses
Quand je teste le simulator en 3.0, Xcode m'affiche 122 erreurs alors qu'en 2.2.1 et inférieur tout marche sans problème.
Voici les erreurs :
http://paste.ideaslabs.com/show/iIK9NyrHUG
Quelqu'un pourrait-il savoir d'où viennent ces erreurs ?
J'ai donc supprimer tous les Framework un par un et re-inclus ceux de la 3.0 mais rien ne change.
Il ne me reste maintenant plus qu'un problème : gérer correctement le mouvement de la balle (CGRect). En effet, elle rebondit bien sur les bords mais d'une manière non-normal d'un point de vue physique (elle cogne le bord droit en venant du haut et au lieu de repartir vers le bas repart vers le haut). Elle effectue aussi quelquefois un soubresaut.
Voici ma fonction qui est appeller toutes les 0.05 secondes :
Mon drawRect: (me semble correct) :
Le morceau intéressant de mon awakeFromNib :
Je ne sais absolument pas comment faire rebondir ce CGRect (ici blushBall) correctement. Avec une UIImageView il suffisait de donner à la coordonnée sa valeur opposée mais là je ne sais absolument pas.
Si quelqu'un aurait une petite astuce ou pourrait m'éclairer je lui en serait vraiment très reconnaissant.
Encore merci,
Guillaume
http://mistralh.servhome.org/cgrect-bounce-problem.mov
Ils ne rebondissent pas normalement.
C'est exactement le même principe qu'avec une image, et tout aussi facile, voire plus pourtant.
- On touche un bord vertical -> le signe de l'abscisse du vecteur vitesse s'inverse
- On touche un bord horizontal -> le signe de l'ordonnée du vecteur vitesse s'inverse
Bon ben c'est triste à dire mais je pense que mon problème est définitivement résolu.
Merci beaucoup à tous ceux qui m'ont aidé