新手Core Animation教学:窗口淡入淡出特效
时间: 2009-06-11 18:29 点击: 次
Cocoachina介绍Core Animation相关的内容也蛮久的了,这次为大家奉献一个简单点的小程序,但是相信你一定用得着:在程序启动时,使用窗口淡入特效将窗口显示出来;在程序关闭或者窗口关闭时,使用窗口淡出效果将窗口隐藏。
当然,使用这个例子的特效的前提是你的程序是专门为Leopard开发的,如果想在Tiger实现,可能要麻烦点,因为例子中我们使用Core Animation去实现这个特效。
由于这个例子非常简单,而且比较实用,很适合初学者阅读,看看怎么做的然后在你自己的程序中加入这种很酷的效果吧。
这是一个cocoachina.com提供的教学,和往常的教学一样,我们首先在XCode中建立一个Cocoa工程,打开Interface Builder,拽进去一个Object,在Class里改名为AppController,然后在下面的Outlet里点加号,添加一个叫做window的outlet。然后选择File菜单,Write Class…保存为AppController.m和AppController.h。
切回XCode,修改一下AppController.h,让它看起来是这样的:
#import <Cocoa/Cocoa.h>
#import <QuartzCore/CoreAnimation.h>
@interface AppController : NSObject {
IBOutlet NSWindow * window;
BOOL shuttingDown;
}
@property (retain) NSWindow * window;
@property BOOL shuttingDown;
@end



self.window.alphaValue = 0.0;
[self.window.animator setAlphaValue:1.0];
接着我们该考虑窗口关闭时的情况,由于我们的AppController是window的delegate,所以我们可以接收到这个消息:
- (BOOL)windowShouldClose:(id)sender
{
[self.window.animator setAlphaValue:0.0];
return NO;
}
这里有一个问题,就是其实淡出动画结束时,窗口是没有真正关掉的。要想真正关掉,我们就需要再做点事情,我们需要在awakeFromNib的时候,建立一个CAAnimation的实例:
CAAnimation *anim = [CABasicAnimation animation];
[anim setDelegate:self];
[self.window setAnimations:[NSDictionary dictionaryWithObject:anim forKey:@"alphaValue"]];
将这个anim托管给自己,我们就可以接收到下面这个消息:
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag
这样,在动画结束的时候我们就可以手动将窗口关闭了:
[self.window close];
在程序关闭的时候,窗口虽然关掉了,但是我们是不会接收到windowShouldClose:消息的,这时候我们必须处理这个消息:
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSNotification *)notification
这样,无论在窗口关闭或是程序退出的时候,你都可以给你的Leopard程序这种酷酷的效果了,最关键的是,这一点都不复杂。
你可以下载本文这个例子的源程序,记得要用XCode 3.0以上打开,在Leopard中使用。
顶一下(3)
100%
踩一下(0)
0%
发表评论
本类文章点击排行榜
- [06-11] Cocoachina教学:Core Animation入门
- [06-11] Core Animation教学:使用Transit
- [06-11] Quartz Composer完全入门(1)
- [06-11] 使NSImage支持在图片上添加倒影
- [06-11] Core Animation:用最少代码画出
- [06-11] Quartz Composer完全入门(2)
- [06-11] 新手Core Animation教学:窗口淡
- [06-11] Core Animation教学:创建类似i
- [06-11] Quartz Composer基础教程
推荐内容
最近更新
- [06-11] 使NSImage支持在图片上添加倒影效果
- [06-11] 如何制作Core Image滤镜插件
- [06-11] 格式转换:如何将CGPDFPageRef转换为CGImageRef
- [06-11] 优秀源码推介:在程序中使用遥控器
- [06-11] 介绍一下如何设置CGColor颜色值
- [06-11] Quartz Composer完全入门(2)
- [06-11] Quartz Composer完全入门(1)
- [06-11] Quartz Composer基础教程
- [06-11] 如何将一幅图片保存为文件存储


使NSImage支持在图片上添加倒影效果
Quartz Composer完全入门(2)
Quartz Composer完全入门(1)
Quartz Composer基础教程
新手Core Animation教学:窗口淡入淡出特效
Core Animation教学:创建类似iTunes的基于CALayer的滚
Core Animation:用最少代码画出照片倒影效果
Core Animation教学:使用Transitions制作带动画效果的