Cocos2diPhone场景切换的基础知识

场景切换:游戏系统包括3个典型场景,分别由3个不同的层来实现,场景的切换主要使用Director的ReplaceScene函数来实现。

//ReplaceScene函数原型:
-(void) newGame:(id) sender
{
Scene *sc = [ Scene node];
[ sc addChild:[ GameLayer noder]];
[[ Director sharedDirector] replaceScene: sc];
}

首先创建一个新的Scene实例,在创建一个目标层的新实例(在以上代码众就是GameLayer),附加给这个场景实例,再调用Director的ReplaceScene函数,并将新场景(就是包含了GameLayer层的场景实例sc)作为当前激活层展示其内容。

需要实现画面切换效果时,可以将上面的代码改为下面这样,使用画面切换效果类(SlideInRTransition)的静态函数返回的场景类传递给ReplaceScene。

[[Director sharedDirector] replaceScene: [ SlideInRTransitiontransitionWithDuration:1.2f scene: sc]];

画面坐标系:坐标系的概念,一般意义上的坐标系为笛卡尔坐标系,不同的图形库采用不同的坐标系,iPhone平台提供了两种绘图库:Quartz 2D和OpenGL ES。其中Quartz是Core Graohics绘图库的子集,OpenGL ES是跨平台图形库OpenGL的嵌入设备版(Embedded System)。这两者的坐标系的原点就不一样。

  1.Quartz的原点在左上角:这是一种基于虚拟“画布”绘图模型的图形库。绘图指令可以按次序向“画布”上画下不同的内容,后面画的内容覆盖签名画的内容(透明除外)。

  2.OpenGL ES的原点再左下角:OpenGL ES相对来说比较复杂,这实际上是一个3D的绘图库,按照“状态机”模型设计的绘图库,这个理解起来比较复杂,不是简单的让后者简单叠加再前者上面,而是纪录各个绘制内容的3维位置关系,按照系统设定的投影关系,展示所有绘制的这内容是在某个特定的虚拟“窗口”上的图像。

Cocos2D-iPone是基于OpenGL ES(针对OpenGL的学习是值得的,主流操作系统都支持该图形库,比如说Google手机的Android)。

  1.anchorPoint:为了将一个矩形图像精准的放置在屏幕一个位置上,需要设置该矩形的位置参考点,(人们通常习惯于将参考点放是、认为是该矩形的左上角那个点)。CocosNode的该属性就是这个参考点的,x,y轴按照OpenGL ES坐标系,数值采用相对自身宽高的比例。

   2.Position:CocosNode对象的实际OpenGL ES坐标,注意此处需要浏览课本,此原理为图解。

代码分析请观看书本。

原文地址:https://www.cnblogs.com/chenxiangxi/p/2267406.html