NSString *pathOfParticle = [[NSBundle mainBundle] pathForResource:@"menu-lights" ofType:@"sks"];
SKEmitterNode *_lights = [NSKeyedUnarchiver unarchiveObjectWithFile:pathOfParticle];
[self addChild:_lights];

原理就是将当前的屏幕保存到UIImage中然后使用CIFilter进行滤镜,再将滤好的图像再保存到UIImage中并且返回

- (UIImage *)getBluredScreenshot
{
    // 获取屏幕截图,保存到ss(UIImage *)中
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 1);
    [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES];
    UIImage *ss = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
 
    // 使用模糊滤镜,将ss的CGImage属性带入
    CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [gaussianBlurFilter setDefaults];
    [gaussianBlurFilter setValue:[CIImage imageWithCGImage:[ss CGImage]] forKey:kCIInputImageKey];
    // 以下的5为模糊深度
    [gaussianBlurFilter setValue:@5 forKey:kCIInputRadiusKey];
 
    // 获得滤镜后的Image(CIImage *)
    CIImage *outputImage = [gaussianBlurFilter outputImage];
 
    // 使用CIContext将CIImage转换成为UIImage
    CIContext *context = [CIContext contextWithOptions:nil];
 
    // 图像的大小获取
    CGRect rect = [outputImage extent];
    rect.origin.x += (rect.size.width  - ss.size.width ) / 2;
    rect.origin.y += (rect.size.height - ss.size.height) / 2;
    rect.size = ss.size;
 
    // 创建CGImage
    CGImageRef cgimg = [context createCGImage:outputImage fromRect:rect];
 
    // 由CGImage创建UIImage对象
    UIImage *image = [UIImage imageWithCGImage:cgimg];
    CGImageRelease(cgimg);
 
    // 返回
    return image;
}

直接代码:

CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotation.duration = DURATION_OF_CHANGE_THEME;
rotation.toValue = [NSNumber numberWithFloat:M_PI * 2];
[view.layer addAnimation:rotation forKey:@"rotation"];

// C99中的标准,可以使用__VA_ARGS__在宏中表示多参数,例如:
#define PRINT_LOG(__fmt__, ...) __my_print_log(__fmt__, __VA_ARGS__)
 
// 而这样的情况下,若PRINT_LOG只带字符串参数,而不带其它的附加参数(就是...为空,例如:PRINT_LOG("hello world"))
// 的情况下,是无法编译通过的,编译器会提示缺少参数。于是我们使用##__VA_ARGS__,如下:
#define PRINT_LOG(__fmt__, ...) __my_print_log(__fmt__, ##__VA_ARGS__)
 
// 使用va_list list来定义一个变参变量,然后使用va_start及va_end来开始或者结束一个变参变量的使用
va_list list;
// 开始使用一个变参变量
va_begin(list, __fmt__);
// 在这里使用变参变量,转换成为任何类型,如下,转换成为int型,然后list会自动指向下一个变参变量
va_arg(list, int);
// 结束变参变量的使用
va_end(list);
 
// cocoa中使用NSString的initWithFormat:arguments:可以带入变参变量,如下:
NSString *content = [[NSString alloc] initWithFormat:fmt arguments:list];
 
// 另外,若函数为普通的C函数形式,但却使用了OBJECTIVE-C中的对象,如下:
FOUNDATION_EXPORT void __print_log(char const* filename, char const* funcName, int lineNumber, NSString *fmt, ...);

iphonesimulator和iphoneos的目标代码是不同的,若要编译出同时支持这两个平台的静态库,需要使用命令lipo将iphonesimulator和iphoneos的两个静态库合并起来,例如

xcodebuild -project Projects/iOS/NetEngine.xcodeproj -sdk "iphonesimulator"
xcodebuild -project Projects/iOS/NetEngine.xcodeproj -sdk "iphoneos"
lipo -create Projects/iOS/build/Release-iphoneos/libNetEngine.a Projects/iOS/build/Release-iphonesimulator/libNetEngine.a -output lib/iOS/libNetEngine.a

1. 需要下载cocos2d的源代码,从http://www.cocos2d-iphone.org下载
2. cocos2d是使用doxygen来生成帮助文档的,所以需要下载doxygen,从http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc下载dmg包,直接安装
3. 按照cocos2d的官方所写的文档,是无法成功的,因为dot命令默认在系统中没有,于是还得下载graphviz包,从http://www.graphviz.org中下载对应MAC系统版本的安装包,然后双击安装
4. 使用命令建立dot到/usr/bin的符号链接

sudo ln -s /usr/local/bin/dot /usr/bin/dot

5. 解压缩cocos2d的源代码,然后使用xcode打开workspace文件,选择cocos2d-documentation,编译
6. 在帮助文档中选择cocos2d的文档集,则可以查看cocos2d的文档