这方面的内容, 还不是很全面, 现在我的重心是在应用方面, 游戏还没有学太多.
1.iOS加载应用程序的时候会使用 "Default.png", "Icon.png"则用作应用程序的图标; "fps_p_w_picpaths.png"是 cocos2d 用来显示帧率的, 即每秒显示的帧数: 你不能删除或者修改此图片; "info.plist"文件包含了一些与应用程序相关的配置信息, 你只需要在快要发布应用时才修改这些配置信息.
2."_prefix.pch"头文件的作用是给编译过程加速; 应该把不常变化的框架(Frameworks)头文件添加到前缀头文件(prefix header)中.这样在编译的时候, 框架的代码会被预先编译, 所有的类都将可以使用这些头文件.3. "AppDelegate"类: 用于处理程序的全局事件和状态变化; "HelloWorldScene"类: 包含了所有用于显示Hello World标签的代码. AppDelegate通过在某些时间点从iOS接收信息来跟踪程序的状态变化; 程序开始运行后收到的第一个信息是 applicationDidFinishLaunching AppDelegate中dealloc方法不会被调用, 当iOS关闭一个程序时, 它只是简单的把内存清空, 以加快关闭的速度. 4.单例 单例是在程序生命周期里只被实例化过一次的类, 为了确保这一点, 需要利用类的一个静态(类)方法(以"shared"开头的)来生成和访问对象 最常用到的cocos2d 单例类和访问它们的方法: CCActionManager *sharedManager = [CCActionManager sharedManager]; CCDirector *sharedDirector = [CCDirector sharedDirector]; CCSpriteFrameCache *sharedCache = [CCSpriteFrameCache sharedSpriteFrameCache]; CCTextureCache *sharedTexCache = [CCTextureCache sharedTextureCache]; CCTouchDispatcher *sharedDispatcher = [CCTouchDispatcher sharedDispatcher]; CDAudioManager *sharedManager = [CDAudioManager sharedManager]; SimpleAudioEngine *sharedEngine = [SimpleAudioEngine sharedEngine]; MyManager类实现单例 static MyManager *sharedManager = nil; +(MyManager*) sharedManager { if (sharedManager == nil) { sharedManager = [[MyManager alloc] init]; } return sharedManager; }5.CCDirector (导演) Director的用处: 1)访问和改变场景 2)访问cocos2d的配置细节 3)访问视图(OpenGL,UIView,UIWindow) 4)暂停,恢复和结束游戏 5)在UIKit和OpenGL之间转换坐标 Director的类型: 1)CCDisplayLinkDirector // 最好的选择, 只支持iOS 3.1以上的版本 2)CCFastDirector 3)CCThreadedFastDirector // 可以让Cocoa Touch视图和cocos2d一同工作, 但很耗电 4)CCTimerDirector // 最慢的6.CCNode 所有节点的基类都是CCNode类, 它包含了位置信息, 但是没有显示信息.它是所有其他节点类的父类, 包括两个最基本的类: CCScene和CCLayer. 常用的类: 1)CCLayer: CCMenu 2)CCScene: CCTransitionScene 3)CCSprite: CCLabelTTF 常用方法: 1) CCNode *childNode = [CCNode node]; // 生成一个新节点, 使用类似这种方法创建的对象, 都带有自动释放功能 2) [myNode addChild: childNode z: tag: ] // 添加子节点; z值越小的节点会被首先绘制; 多个节点拥有相同的z值, 他们的绘制顺序将由他们的添加顺序来决定; 这个规则只适用于像sprites那样有视觉表现的节点。 3) [myNode getChildByTag: ] // 获取子节点, 动作(Action)和节点(Action)的tag值不会冲突 4) [myNode removeChildByTag: cleanup:YES]; // 通过tag删除子节点, cleanup会停止任何运行中的动作 5) [myNode removeChild: ] // 删除子节点 6) [myNode removeAllChildrenWithCleanup: ] // 删除所有的子节点 7) [childNode removeFromParentAndCleanup: ] // 从childNode的父节点删除childNode 节点可以预定信息, 即每隔一段时间调用一次方法 -(void) scheduleUpdate [self schedule:selector() interval: ] [self unschedule: _cmd]; // _cmd关键字是当前方法的缩写 [self scheduleUpdateWithPriority: ] // priority值越小(可以有负值), 将被首先执行, 默认值为0, 7.场景和层 场景图(场景层级)是由所有目前活跃的cocos2d节点所组成的一个层级图, 除了场景本身, 每一个节点只有一个父节点, 但是可以有任意数量的子节点; 当你将节点添加到其它节点中时, 你就在构建一个节点场景图; 你对一个节点施加的影响将会影响到它的所有子节点 CCNode, CCScene和CCLayer这些类是没有视觉表现的, 它们是在内部作为场景图的抽象概念来使用的, CCLayer最典型的应用是把各个节点组织起来, 还有接收触摸输入和加速计输入的信息 CCScene是一个抽象的概念, 它的功能是根据像素坐标把物体放置在场景里相应的地方, CCScene对象总是场景图里面的第一个节点, 通常CCScene的子节点都是继承自CCLayer CCLayer包含了各个游戏对象, 因为大多数情况下场景对象本身不包含任何游戏相关的代码, 而且很少被子类化, 所以它一般都是在CCLayer对象里通过+(id)scene这个静态方法来创建的 [[CCDirector sharedDirector] runWithScene:[HelloWorld scene]]; // 设置运行的第一个场景 [[CCDirector sharedDirector] replaceScene:[HelloWorld scene]]; // 替换以后需要变换的场景 [[CCDirector sharedDirector] pushScene:[Settings scene]]; // 显示一个新的场景 [[CCDirector sharedDirector] popScene]; // 回到之前还保存在内存中的场景8.CCTransitionScene CCFadeTransition* tran = [CCFadeTransition transitionWithDuration:1 scene:[HelloWorld scene] withColor:ccWHITE]; // 淡入淡出场景, 在1s中内过渡为白色 [[CCDirector sharedDirector] replaceScene: tran] // 使用过渡场景对象 1)CCFadeTransition: 淡入淡出到一个指定的颜色,然后回来。 2)CCFadeTRTransition (还有另外三个变化): 瓦片(tiles)反转过来揭示场景。 3)CCJumpZoomTransition: 场景跳动着变小,新场景则跳动着变大。 4)CCMoveInLTransition (还有另外三个变化): 场景移出,同时新的场景从左边,右边,上方或者下方移入。 5)CCOrientedTransitionScene (还有另外六个变化): 这种过渡效果会将整个场景翻转过来。 6)CCPageTurnTransition: 翻动书页的过渡效果。 7)CCRotoZoomTransition: 当前场景旋转变小,新的场景旋转变大。 8)CCShrinkGrowTransition: 当前场景缩小,新的场景在其之上变大。 9)CCSlideInLTransition (还有另外三个变化): 新的场景从左边,右边,上方或者下方滑入。 10)CCSplitColsTransition (还有另外一个变化): 将当前场景切成竖条,上下移动揭示新场景。 11)CCTurnOffTilesTransition:将当前场景分成方块,用分成方块的新场景随机的替换当前场景分出的方块。9.CCLayer CCLayer类本身并不做什么, 它的功能是允许触摸和加速计的输入, 因为大多数游戏会接受基本的触摸输入, 所以CCLayer通常是第一个被加入CCScene的类. 1)当手指首次触摸到屏幕时调用的方法: -(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent*)event 2)手指在屏幕上移动时调用的方法: -(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent*)event 3)当手指从屏幕上提起时调用的方法: -(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 4)当触摸事件被取消时调用的方法: (不常用) -(void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent*)event 触摸事件是由Cocoa Touch API接收的, 所以触摸位置必须被转换为OpenGL坐标 CGPoint touchLocation = [[touches anyObject] locationInView: [touch view]]; [[CCDirector sharedDirector] convertToGL:touchLocation]; self.isAccelerometerEnabled = YES; // 激活加速计后可以接收加速计事件 // 使用下面的方法, 来接受加速计事件 -(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration // acceleration有三个属性, acceleration.x, acceleration.y, acceleration.z10.CCSprite 使用图片把精灵(sprite)显示在屏幕, 生成精灵最简单的方法是把图片文件加载进CCTexture2D材质里面, 然后将它赋给精灵, 精灵的中心点和左下点是重合的, 精灵中只能看到贴图的右上部分, 1/4贴图的大小 CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"]; [self addChild:sprite]; sprite.anchorPoint = CGPointMake(0.5, 0.5); // 定位点, 只有当此节点有贴图的时候, 这个定位点才有用, 定位点里面的值是一个抽象的因素(乘数, 而不是像素), 改变定位点的时候, 改变的是贴图的位置, 而不是精灵的位置, 定位点是贴图在精灵左下角的位置, 默认是中间 11.CCLabelTTF label.position label.anchorPoint12.CCMenu CCMenu只支持CCMenuItem节点(CCMenuItemSprite, CCMenuItemToggle, CCMenuItemLabel, CCMenuItemImage, CCMenuItemAtlasFont)作为它的子节点 [CCMenu menuWithItems: ] // 用菜单项生成菜单 [menu alignItemsVerticallyWithPadding:40]; // menu的对齐方式13.CCAction 节点可以运行动作: CCAction *action = [CCBlink actionWithDuration: blinks: ]; // 声明一个动作 action.tag [myAction runAction: action] // 运行这个动作会让节点闪烁 [myNode getActionByTag: ] // 用tag获取action [myNode stopActionByTag: ] // 用tag停止相关联的动作 [myNode stopAction:action] // 停止相关联的动作 [myNode stopAllActions] // 停止此节点上运行的所有动作 CCMoveTo CCRotateBy CCRepeatForever CCEaseAction(舒缓动作, 改变一段时间内的动作效果) 1)CCEaseBackIn, CCEaseBackInOut, CCEaseBackOut 2)CCEaseBounceIn, CCEaseBounceInOut, CCEaseBounceOut 3)CCEaseElasticIn, CCEaseElasticInOut, CCEaseElasticOut 4)CCEaseExponentialIn, CCEaseExponentialInOut, CCEaseExponentialOut 5)CCEaseIn, CCEaseInOut, CCEaseOut 6)CCEaseSineIn, CCEaseSineInOut, CCEaseSineOut CCSequence // 动作序列, 将一组动作添加到动作序列中, 可以一个动作跟着一个动作的执行 CCInstantAction(即时动作) CCCallFunc // 不带参数 CCCallFuncN: // 参数为NODE型指针 CCCallFuncND: // 参数为NODE和DATA CCCallFuncNO: // 参数为NODE和CCObject