Bonne journée! J'utilise le moteur physique "chipmunk". Essayez de créer un objet dynamique en cliquant sur. AddBalls() crée le corps et la forme désirés. En cliquant il faut générer un nouvel objet et le mettre en tableau.Impossible d'ajouter un objet à NSMutableArray
-(void)AddBalls: (UIImageView *)image;
{
cpBody *ball2Body = cpBodyNew(100.0, INFINITY);
ball2Body->p = cpv(60, 250);
cpSpaceAddBody(space, ball2Body);
cpShape *ball2Shape = cpCircleShapeNew(ball2Body, 20.0, cpvzero);
ball2Shape->e = 0.5;
ball2Shape->u=0.2;
ball2Shape->data = (__bridge void*)image;
ball2Shape->collision_type = 1;
cpSpaceAddShape(space, ball2Shape);
[children addObject: (__bridge id)ball2Shape];//EXC_BAD_ACCESS code=1
}
-(void)setupChipmunk
{
cpInitChipmunk();
space = cpSpaceNew();
space->gravity = cpv(0, -100);
space->elasticIterations = 10;
[NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f target:self selector:@selector(tick:) userInfo:nil repeats:YES];
cpBody *ballBody = cpBodyNew(100.0, INFINITY);
ballBody->p = cpv(60,250);
cpSpaceAddBody(space, ballBody);
cpShape *ballShape = cpCircleShapeNew(ballBody, 20.0, cpvzero);
ballShape->e = 0.5;
ballShape->u = 0.8;
(ballShape->data) =(__bridge void*) ball;
ballShape->collision_type = 1;
cpSpaceAddShape(space, ballShape);
}
-(void)tick:(NSTimer *)timer
{
cpSpaceStep(space, 1.0f/60.0f);
cpSpaceHashEach(space->activeShapes, &updateShape, nil);
}
-(void) updateShape (void *ptr, void *unused)
{
cpShape *shape = (cpShape*)ptr;
if(shape == nil || shape->body == nil || shape->data == nil) {
NSLog(@"Unexpected shape please debug here...");
return;
}
if([(__bridge UIImageView*)shape->data isKindOfClass:[UIView class]]) {
[(UIView *)((__bridge UIImageView*)shape->data) setCenter:CGPointMake(shape->body->p.x, 480 - shape->body->p.y)];
}
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
- (void)handleTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
[self AddBalls];
}
}
Méthode AddBalls doit mettre une nouvelle forme dans le tableau. Mais j'ai eu l'erreur "EXC_BAD_ACCESS...
". Que devrais-je faire? Merci
Où est la définition de vos 'enfants'? Ce devrait être un objet 'NSMutableArray'. – sunkehappy
Au-dessus d'un code total, j'ai défini les enfants comme NSMutableArray. En fait, ball2Shape est un objet de classe C. Mais j'utilise (__bridge id) pourtant ça n'aide pas – user1722231