Skip navigation.
 
mlCAAnimation working with float, but not with int?
FROM : Kevin Barnes
DATE : Tue Jan 15 19:24:51 2008

I'm creating a view and animating an instance variable of that view. If the instance variable is a float, everything works perfectly, but if I change the float to an int, the animation doesn't happen. It appears that the "animationWithKeyPath" function doesn't even get called if my ivar is an int.
Can anyone tell me why my code doesn't work?


    Class cls = objc_allocateClassPair([NSView class], "AnimatedView", 0);
    class_addIvar(cls, "animValue", sizeof(int), log2(sizeof(int)), "i");
    Method setterImpl = class_getClassMethod([MyView class], @selector(setAnimValue:));
    class_addMethod(cls, @selector(setAnimValue:), method_getImplementation(setterImpl), "v@:i");
    objc_registerClassPair(cls);

    NSView *av = class_createInstance(cls, 0);
    [av init];
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"animValue"];
    [anim setFromValue:[NSNumber numberWithInt:0]];
    NSDictionary *dic = [NSDictionary dictionaryWithObject:anim forKey:@"animValue"];   
    [av setAnimations:dic];
    [self addSubview:av];

    objc_msgSend([av animator], @selector(setAnimValue:), (int)100);


Implementation of setAnimValue:

+(void)setAnimValue:(int) val {
    printf("setAnimValue val=%d\n", val);
}


_________________________________________________________________

Related mailsAuthorDate
No related mails found.