cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第5章:创建和转换场景)

翻译 2015年11月12日 10:06:40

原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。
向原著的作者SlackMoehrle, Ricardo, Justin, Nite , Kai, Minggo, Wenhai, Tony, Yingtao, Rao 致敬。

第5章:创建和转换场景(Scenes)

什么是场景?

游戏中的场景是精灵(Sprites),标签(Labels),节点(Nodes)和其他对象的一个容器。场景以帧为基础控制逻辑和渲染。你至少需要一个场景来开始你的游戏。你可以把这看成是一个电影。场景上的事物就是用户看到的正在发生的事物。你可以建立任意数量的场景,并且非常容易的完成他们之间的切换。Cocos2d-x提供了场景转换和一些非常酷的转换效果。

创建场景

这个非常容易

auto myScene = Scene:create();

还记得场景图形(Scene Graph)么?

在本书的第2章,我们学习了关于场景图形的知识,并且知道了他是如何影响游戏的图形绘制工作。它决定了GUI图形的绘制顺序这一点非常重要。z-order也非常重要!

一个简单的场景

我们来建立一个简单的场景。记住,Cocos2d-x使用的是右手坐标系。这就以为着 屏幕/显示区域 左下角是坐标的原点。当你开始设定你游戏元素的位置的时候,这里就是你计算的原点。我们来创建一个简单的场景并向上面添加一些元素。

auto dirs = Director::getInstance();
Size = visibleSize = dirs->getVisibleSize();

auto myScene = Scene:create();

auto label1 = Label:createWithTTF("My Game","Marker Felt.ttf", 36);
label1->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));

myScene->addChild(label1);

auto sprite1 = Sprite::create("mysprite.png");
sprite1->setPosition(Vec2(100, 100));

myScene->addChild(sprite1);

当我们运行这段代码的时候,我们看到一个场景,上面有一个标签和一个精灵。虽然没有其他的操作,但是这是一个开始。

两个场景之间的转换

在游戏中有时需要完成两个场景的转换。可能是游戏的开始,关卡的改变或者是游戏结束。Cocos2d-x提供了一些场景转换的方法。
场景转换方法
这里有不少场景转换的方法,每一种都有不同的功能,我们一起看一下:

auto myScene = Scene::create();

runWithScene - 这个方法只在第一次使用。这个方法能够启动你的第一个游戏场景。

Director::getInstance()->runWithScene(myScene);

replaceScene - 立刻替换场景。

Director::getInstance()->replaceScene(myScene);

pushScene - 挂起正在运行的场景。将当前场景压入一个挂起场景的栈中。只有当前有正在运行的场景才能调用这个方法。

Director::getInstance()->pushScene(myScene);

popScene - 这个场景将会替换正在运行的场景。正在运行的场景将会被删除。只有当前有场景正在运行才能调用这个方法。

Director::getInstance()->popScene(myScene);

场景转换效果
你可以为你的场景转换添加视觉效果

auto myScene = Scene::create();

//Transition Fade
Director::getInstance()->replaceScene(TransitionFade::create(0.5), myScene, Color3B(0, 255, 255));

//FlipX
Director::getInstance()->replaceScene(TransitionFlipX::create(2, myScene));

//Transition Slide In
Director::getInstance()->replaceScene(TransitionSlideInT::create(1, myScene));

Cocos2D-X学习3:创建一个新的场景

首先使用cocos-console创建一个项目工程,在命令行窗口下输入cocos new  -p CocosProject01 -l cpp -d D:\cocos2d-x-3.3\test\ Coc...
  • lin453701006
  • lin453701006
  • 2016年10月12日 21:31
  • 1293

cocos2d-x lua 场景的创建

cocos2d-x lua中场景的创建,层的创建及菜单的回调和动画的简单使用
  • qqqGL
  • qqqGL
  • 2014年10月11日 11:02
  • 2580

Cocos2d-x场景切换相关函数介绍

场景切换是通过导演类Director实现的,其中的相关函数如下:runWithScene(Scene* scene)。该函数可以运行场景。只能在启动第一个场景时候调用该函数。如果已经有一个场景运行情况...
  • tonny_guan
  • tonny_guan
  • 2014年05月29日 21:42
  • 5782

cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第4章:动作)

原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。 向原著的作者SlackMoehrle, Ricardo, Justin, Nite , Kai, Mingg...
  • Mr_Afox
  • Mr_Afox
  • 2015年11月09日 10:25
  • 509

cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第8章:事件派发器)

Cocos2d-x Programmers Guide v3.3 译本和阅读笔记原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。 向原著的作者SlackMoe...
  • Mr_Afox
  • Mr_Afox
  • 2015年12月22日 09:37
  • 559

cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第6章UI)

cocos2d-x Programmers Guide v3.3 译本和阅读笔记原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。 向原著的作者SlackMoe...
  • Mr_Afox
  • Mr_Afox
  • 2015年12月20日 00:35
  • 534

Cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第7章:其他节点类型)

Cocos2d-x Programmers Guide v3.3 译本和阅读笔记原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。 向原著的作者SlackMoe...
  • Mr_Afox
  • Mr_Afox
  • 2015年12月20日 21:59
  • 379

cocos2d-x Programmers Guide v3.3 译本和阅读笔记(1-2章)

原著是英文,本文只是一个个人的简单理解的中文的非正式翻译,供自己学习使用,参考需谨慎。 向原著的作者SlackMoehrle, Ricardo, Justin, Nite , Kai, Minggo...
  • Mr_Afox
  • Mr_Afox
  • 2015年11月02日 11:04
  • 623

Cocos2D-X2.2.3学习笔记18(场景切换)

  • 2014年07月02日 17:44
  • 838KB
  • 下载

cocos2d-x学习笔记(5)-- CCScene场景的切换(带过度效果).rar

  • 2012年08月25日 22:35
  • 7.15MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x Programmers Guide v3.3 译本和阅读笔记(第5章:创建和转换场景)
举报原因:
原因补充:

(最多只允许输入30个字)