> [[self window] setAnimations:[NSDictionary dictionaryWithObject:[self
> shakeAnimation:[[self window] frame]] forKey:@"frameOrigin"]];
> [[[self window] animator] setFrameOrigin:[[self window] frame].origin];
>
> /*
>
> shake animation
> http://www.cimgf.com/2008/02/27/core-animation-tutorial-window-shake-effect/
>
> */
> - (CAKeyframeAnimation *)shakeAnimation:(NSRect)frame
> {
> CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animation];
>
> CGMutablePathRef shakePath = CGPathCreateMutable();
> CGPathMoveToPoint(shakePath, NULL, NSMinX(frame), NSMinY(frame));
> int idx;
> for (idx = 0; idx < numberOfShakes; ++idx)
> {
> CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) -
> frame.size.width * vigourOfShake, NSMinY(frame));
> CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) +
> frame.size.width * vigourOfShake, NSMinY(frame));
> }
> CGPathCloseSubpath(shakePath);
> shakeAnimation.path = shakePath;
> shakeAnimation.duration = durationOfShake;
> return shakeAnimation;
> }
> - (CAKeyframeAnimation *)shakeAnimation:(NSRect)frame
> {
> CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animation];
>
> CGMutablePathRef shakePath = CGPathCreateMutable();
> CGPathMoveToPoint(shakePath, NULL, NSMinX(frame), NSMinY(frame));
> int idx;
> for (idx = 0; idx < numberOfShakes; ++idx)
> {
> CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) -
> frame.size.width * vigourOfShake, NSMinY(frame));
> CGPathAddLineToPoint(shakePath, NULL, NSMinX(frame) +
> frame.size.width * vigourOfShake, NSMinY(frame));
> }
> CGPathCloseSubpath(shakePath);
> shakeAnimation.path = shakePath;
> shakeAnimation.duration = durationOfShake;
> return shakeAnimation;
> }
Note that this code does not have any effect when compiled as 64-bit.
I don't remember all the details at the moment, but I believe the
issue is that the 'frameOrigin' property doesn't work under 64-bit. In
my own code I was forced to use the 'frame' property instead, which
changes the code a bit, but works for both 32- and 64-bit.
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]